#include //#define int long long using namespace std; inline int read() { int x=0,f=1;char ch=getchar(); while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();} while (ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-48;ch=getchar();} return x*f; } void write(int x) { if(x<0)putchar('-'),x=-x; if(x<10)putchar(x+'0'); else write(x/10),putchar(x%10+'0'); } const int N=2e3; const int mod=1e9+7; vectorg[N]; int n; struct node{ int x,y,z; }box[N]; int rans; bool fl[N]; int rd[N]; int dp[N]; queueq; signed main(){ // freopen("box.in","r",stdin); // freopen("box.out","w",stdout); n=read(); for(int i=1;i<=n;++i){ int x=read(),y=read(),z=read(); box[i].x=x; box[i].y=y; box[i].z=z; if(box[i].x>box[i].z)swap(box[i].x,box[i].z); if(box[i].y>box[i].z)swap(box[i].y,box[i].z); if(box[i].x>box[i].y)swap(box[i].x,box[i].y); } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(i==j)continue; if(box[i].x>box[j].x&&box[i].y>box[j].y&&box[i].z>box[j].z)rd[j]++,g[i].push_back(j); } } for(int i=1;i<=n;++i)g[0].push_back(i),rd[i]++; q.push(0); dp[0]=0; fl[0]=1; while(!q.empty()){ int t=q.front(); q.pop(); for(int i=0;i