#include using namespace std; #define int long long 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) { dep[x] = max(dep[x], dep[fa]+1); for(auto i:z[x]) { if(i != fa) dfs(i, x); } } signed main() { freopen("box.in", "r", stdin); freopen("box.out", "w", stdout); 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]) { dfs(i, 0); } } for(int i = 1; i <= n; i++) { mx = max(mx, dep[i]); } cout << mx; }