#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long int ll; typedef pair pii; typedef tuple t3; using namespace std; bool contains(t3 parent, t3 child) { ll x1,y1,z1; tie(x1,y1,z1) = parent; ll x2,y2,z2; tie(x2,y2,z2) = child; return x1 > x2 && y1 > y2 && z1 > z2; } int main(){ int n; cin >> n; vector v(n); vector c; c.assign(n, 1); for(int i = 0;i < n;i++) { vector a(3); cin >> a[0] >> a[1] >> a[2]; sort(a.begin(), a.end()); v[i] = make_tuple(a[0], a[1], a[2]); } sort(v.begin(), v.end()); int maxCount = 0; for(int i = 0;i < n;i++) { int count = 0; for(int j = 0;j < n;j++) { if(i == j) { continue; } if(contains(v[i], v[j])) { count = max(count, c[j]); } } c[i] = max(c[i], count + 1); maxCount = max(maxCount, c[i]); } cout << maxCount << endl; return 0; }