#include<bits/stdc++.h>
using namespace std;
#define ll long long
int n,bes[200100];
struct stu{
int g,s,b,xh,pm;
}su[200100];
bool cmp1(stu at,stu bt){
return at.g>=bt.g;
}
bool cmp2(stu at,stu bt){
return at.s>=bt.s;
}
bool cmp3(stu at,stu bt){
return at.b>=bt.b;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
scanf("%d%d%d",&su[i].g,&su[i].s,&su[i].b);
su[i].xh=i;
}
sort(su+1,su+n+1,cmp1);
for(int i=1;i<=n;i++){
if(i==1){
bes[su[i].xh]=1;
su[i].pm=1;
}
else{
if(su[i].g==su[i-1].g){
su[i].pm=su[i-1].pm;
bes[su[i].xh]=su[i-1].pm;
}
else{
su[i].pm=i;
bes[su[i].xh]=i;
}
}
}
sort(su+1,su+n+1,cmp2);
for(int i=1;i<=n;i++){
if(i==1){
bes[su[i].xh]=1;
su[i].pm=1;
}
else{
if(su[i].s==su[i-1].s){
su[i].pm=su[i-1].pm;
bes[su[i].xh]=min(su[i-1].pm,bes[su[i].xh]);
}
else{
su[i].pm=i;
bes[su[i].xh]=min(i,bes[su[i].xh]);
}
}
}
sort(su+1,su+n+1,cmp3);
for(int i=1;i<=n;i++){
if(i==1){
bes[su[i].xh]=1;
su[i].pm=1;
}
else{
if(su[i].b==su[i-1].b){
su[i].pm=su[i-1].pm;
bes[su[i].xh]=min(su[i-1].pm,bes[su[i].xh]);
}
else{
su[i].pm=i;
bes[su[i].xh]=min(i,bes[su[i].xh]);
}
}
}
for(int i=1;i<=n;i++){
printf("%d\n",bes[i]);
}
return 0;
}