#include <bits/stdc++.h>
using namespace std;
int m;
struct A {
int ChineseMath,ChineseMath_max,all,th,name;
} a[10005],ls;
bool cmp(A aa,A bb) {
if(aa.all!=bb.all)return aa.all<bb.all;
else if(aa.ChineseMath!=bb.ChineseMath)return aa.ChineseMath<bb.ChineseMath;
else if(aa.ChineseMath_max!=bb.ChineseMath_max)return aa.ChineseMath_max<bb.ChineseMath_max;
else return aa.all<bb.all;
}
bool cmp1(A aa1,A bb1) {
return aa1.name>bb1.name;
}
bool cmp2(A aa2,A bb2) {
return aa2.th>bb2.th;
}
void dr();
int main() {
dr();
sort(a+1,a+m+1,cmp);
for(int i=1; i<=m; i++)a[i].th=i;
sort(a+1,a+m+1,cmp2);
ls.th=a[1].th;
ls.all=a[1].all;
ls.ChineseMath=a[1].ChineseMath;
ls.ChineseMath_max=a[1].ChineseMath_max;
for(int i=2; i<=m; i++) {
if(ls.all==a[i].all && ls.ChineseMath==a[i].ChineseMath && ls.ChineseMath_max==a[i].ChineseMath_max) {
a[i].th=ls.th;
} else {
ls.th=a[i].th;
ls.all=a[i].all;
ls.ChineseMath=a[i].ChineseMath;
ls.ChineseMath_max=a[i].ChineseMath_max;
}
}
sort(a+1,a+m+1,cmp1);
for(int i=1; i<=m; i++) {
cout<<a[i].th<<endl;
}
return 0;
}
void dr() {
cin>>m;
for(int i=1; i<=m; i++) {
int c,m,e;
cin>>c>>m>>e;
a[i].name=i;
a[i].all=c+m+e;
a[i].ChineseMath=c+m;
a[i].ChineseMath_max=max(c,m);
}
}