#include using namespace std; long long n; struct BOX { int x, y ,z; } box[10005]; vector z[10005]; int dep[10005], in[10005], mx; void dfs(int x, int fa) { if(fa!=-1) dep[x] = max(dep[x], dep[fa]+1); for(auto i:z[x]) { if(i != fa) dfs(i, x); } } int main() { cin >> n; for(int i = 1; i <= n; i++) { cin >> box[i].x >> box[i].y >> box[i].z; int X=min({box[i].x,box[i].y,box[i].z}), Z=max({box[i].x,box[i].y,box[i].z}); int Y = box[i].x+box[i].y+box[i].z-X-Z; box[i].x = X; box[i].y = Y; box[i].z = Z; } for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { if(box[i].z > box[j].z && box[i].y > box[j].y && box[i].x > box[j].x) { z[i].push_back(j); in[j]++; } } } for(int i = 1; i <= n; i++) { if(!in[i]) { z[0].push_back(i); } } dfs(0, -1); for(int i = 1; i <= n; i++) { mx = max(mx, dep[i]); } cout << mx; }