#include<bits/stdc++.h>
using namespace std;
struct adv{
long long x,y;
}a[21000];
long long q[21000];
long long s(adv xx,adv yy)
{
return xx.x<yy.x;
}
long long n,m,i,j,k,h;
int main()
{
cin>>n;
for(i=1;i<=n;++i) cin>>a[i].x>>a[i].y;
sort(a+1,a+n+1,s);
h=1; q[h]=a[1].y;
for(i=1;i<=n;++i)
{
if(a[i].y>q[h])
{
h++; q[h]=a[i].y;
}
else if(a[i].y<q[h])
q[lower_bound(q+1,q+h+1,a[i].y)-q]=a[i].y;
}
cout<<h;
return 0;
}