#include<bits/stdc++.h>
using namespace std;
struct node{
int a,b,c,id,score;
}x[10005];
int cnt[10005];
bool cmp1(node l,node r){
if(l.a+l.b+l.c==r.a+r.b+r.c){
if(l.a+l.b==r.a+r.b){
if(max(l.a,l.b)==max(r.a,r.b)){
return 0;
}
return max(l.a,l.b)>max(r.a,r.b);
}
return l.a+l.b>r.a+r.b;
}
return l.a+l.b+l.c>r.a+r.b+r.c;
}
bool cmp2(node m,node n){
return m.id<n.id;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>x[i].a>>x[i].b>>x[i].c;
x[i].id=i;
}
sort(x+1,x+n+1,cmp1);
int now=1;
x[1].score=1;
for(int i=2;i<=n;i++){
if(cnt[i]!=cnt[i-1])
cout<<i<<' ',now=i;
if(cnt[i]==cnt[i-1]){
if(x[i].a+x[i].b==x[i-1].a+x[i-1].b){
if(max(x[i].a,x[i].b)==max(x[i-1].a,x[i-1].b)){
x[i].score=now;
continue;
}
x[i].score=i;
now=i;
continue;
}
x[i].score=i;
now=i;
continue;
}
}
sort(x+1,x+n+1,cmp2);
for(int i=1;i<=n;i++){
cout<<x[i].score<<'\n';
}
return 0;
}