#include<bits/stdc++.h>
using namespace std;
const int maxn=10000+10;
struct node{
int c,m,e,s,p,id;
} st[maxn];
int n;
bool cmp(node x,node y){
if(x.s==y.s){
if(x.c+x.m==y.c+y.m){//总分相同,比较语,数两科总分
return max(x.c,x.m)>max(y.c,y.m);//语,数两科总分相同,比较语,数两科最高分
}else return (x.c+x.m)>(y.c+y.m);
}else return x.s>y.s;
}
bool cmp2(node x,node y){return x.id<y.id;}
signed main(){
cin>>n;
for(int i=1;i<=n;i++){//读入
cin>>st[i].c>>st[i].m>>st[i].e;
st[i].s=st[i].c+st[i].m+st[i].e; st[i].id=i;
}
sort(st+1,st+n+1,cmp);
// cout<<"id s c+m ma(c,m)\n";
// for(int i=1;i<=n;i++) cout<<st[i].id<<' '<<st[i].s<<' '<<st[i].c+st[i].m<<' '<<max(st[i].c,st[i].m)<<endl;
for(int i=1;i<=n;i++) st[i].p=i;
sort(st+1,st+n+1,cmp2);
for(int i=1;i<n;i++){
if(st[i].s==st[i+1].s && st[i].c+st[i].m==st[i+1].c+st[i+1].m && max(st[i].c,st[i].m)==max(st[i+1].c,st[i+1].m)) st[i+1].p=st[i].p;
cout<<st[i].p<<"\n";
}
cout<<st[n].p;
return 0;
}