#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){
int x;scanf("%d",&x);return x;
}
const int N=2e5+10;
int b[N],c[N],d[N];
struct node{
int jp,yp,tp,bh;
}a[200000+5];
bool cmp1(int x,int y){
return x>y;
}
signed main()
{
int T=read();
for(int i=1;i<=T;i++) {
a[i].jp=read(),a[i].yp=read(),a[i].tp=read();
b[i]=a[i].jp,c[i]=a[i].yp,d[i]=a[i].tp;
}
sort(b+1,b+T+1,cmp1);
sort(c+1,c+T+1,cmp1);
sort(d+1,d+T+1,cmp1);
for(int i=1;i<=T;i++){
int l=1,r=T,mid,ans=0;
while(l<=r){
mid=l+r>>1;
if(b[mid]>b[i]) ans=max(ans,mid),l=mid+1;
else r=mid-1;
}
if(ans==0) {
cout<<"1\n";
continue;
}
int t1=ans+1;
l=1,r=T,mid,ans=0;
while(l<=r){
mid=l+r>>1;
if(c[mid]>c[i]) ans=max(ans,mid),l=mid+1;
else r=mid-1;
}
if(ans==0) {
cout<<"1\n";
continue;
}
int t2=ans+1;
l=1,r=T,mid,ans=0;
while(l<=r){
mid=l+r>>1;
if(d[mid]>d[i]) ans=max(ans,mid),l=mid+1;
else r=mid-1;
}
if(ans==0) {
cout<<"1\n";
continue;
}
int t3=ans+1;
printf("%d\n",min(min(t1,t2),t3));
}
return 0;
}