#include using namespace std; typedef long long ll; #define REP(i,n) FOR(i,0,n) #define FOR(i,a,b) for(ll i=a;i vi; typedef vector> vvi; const ll INF = (1ll << 30); typedef pair pii; struct Edge{ ll s,t,c; }; typedef vector> Graph; typedef vector vpii; bool contains(vi a,vi b) { do { if(a[0]>b[0]&&a[1]>b[1]&&a[2]>b[2]) return true; } while(next_permutation(ALL(b))); return false; } int main() { ll N; cin>>N; vvi v(N,vi(3)); REP(i,N) cin>>v[i][0]>>v[i][1]>>v[i][2]; vector cnt(N,1); REP(i,N) { REP(j,N-1) { if(contains(v[i],v[j])) { cnt[i]=max(cnt[i],cnt[j]+1); } } } ll ans=0; for(ll i:cnt) ans=max(ans,i); cout<