#include #define int long long using namespace std; struct node{ int x,y,z; }box[1010]; struct edge{ int to,next; }a[1000010]; int head[1000010],cnt,ans; bool f[1010]; void add(int u,int v) { a[++cnt].to=v; a[cnt].next=head[u]; head[u]=cnt++; } bool cmp(node x,node y) { return x.x>n; for(int i=1;i<=n;i++) { cin>>box[i].x>>box[i].y>>box[i].z; x=min(min(box[i].x,box[i].y),box[i].z); z=max(max(box[i].x,box[i].y),box[i].z); y=box[i].x+box[i].y+box[i].z-x-z; box[i].x=x; box[i].y=y; box[i].z=z; } sort(box+1,box+n+1,cmp); for(int i=1;i<=n;i++) { for(int j=i+1;j<=n;j++) { if(check(box[i],box[j])) add(i,j); } } for(int i=1;i<=n;i++) { if(!f[i]) dfs(i,1); } cout<