#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;
}