#include <iostream>
#include <algorithm>
using namespace std;
struct node{
int l;
int w;
};
int dp[5020];
node wood[5020];
int n, ans = 1;
bool cmp(node a, node b){
if(a.l == b.l) return a.w > b.w;
return a.l > b.l;
}
int main(){
cin>>n;
for(int i = 1; i <= n; i++) {
cin>>wood[i].l>>wood[i].w;
}
sort(wood + 1, wood + 1 + n, cmp);
for(int i = 1; i <= n; i++) dp[i] = 1;
for(int i = 2; i <= n; i++) {
for(int j = 1; j < i; j++){
if(wood[j].w < wood[i].w){
dp[i] = max(dp[i], dp[j] + 1);
ans = max(ans, dp[i]);
}
}
}
cout<<ans;
return 0;
}