#include<iostream> #include<vector> #include <algorithm> using namespace std; bool chain(pair<int, int> &p1, pair<int, int> &p2) { if( (p1.first > p2.first && p1.second < p2.second) || (p1.first == p2.first && p1.second < p2.second) || (p1.first > p2.first && p1.second == p2.second) ) return true; if( (p1.first < p2.first && p1.second > p2.second) || (p1.first == p2.first && p1.second > p2.second) || (p1.first < p2.first && p1.second == p2.second) ) return true; return false; } class op { public: bool operator() (pair<int, int> &p1, pair<int, int> &p2) { if(p1.first != p2.first) return p1.first < p2.first; else return p1.second > p2.second; } }myOp; int main() { vector<pair<int,int>> vc; vector<int> vd; vc.push_back(make_pair(0,0)); vd.push_back(0); int t, dummy, s, e; cin>>t; while(t--) { cin>>dummy>>s>>e; vc.push_back(make_pair(s,e)); } vd.resize(vc.size()); for(int i=1; i<vd.size(); i++) vd[i] =1; sort(vc.begin() +1 , vc.end(), myOp); for(int i=2; i<vc.size(); i++) { for(int j=i-1; j>0; j--) { if(chain(vc[i], vc[j])) { vd[i] = vd[j] +1; break; } } } int max = vd[1]; for(int i=2; i<vd.size(); i++) if(max < vd[i]) max = vd[i]; cout<<max<<endl; return 0; }