rt
#include<bits/stdc++.h>
using namespace std;
struct stick{int l,w;}a[5002];
bool cmp(stick &a,stick &b){return a.l==b.l ? a.w>b.w : a.l>b.l;}
int n,ans;
vector<int> f;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i) scanf("%d%d",&a[i].l,&a[i].w);
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;++i){
if(!f.empty()){
if(a[i].w==f.back()){
f.push_back(a[i].w);
continue;
}
}
if(upper_bound(f.begin(),f.end(),a[i].w)==f.end()) {
f.push_back(a[i].w);
ans++;
}
else f[int(upper_bound(f.begin(),f.end(),a[i].w)-f.begin())]=a[i].w;
}
printf("%d",ans);
return 0;
}