#include<iostream>
#include<algorithm>
using namespace std;
struct anb
{
int south;
int north;
};
anb a[1000010];
int n, i, len, temp;
long d[200005];
bool cmp(anb x, anb y)
{
return x.north < y.south;
}
int main()
{
cin >> n;
for(i = 1; i <= n; i ++ )
cin >> a[i].north >> a[i].south;
sort(a + 1, a + 1 + n, cmp);
d[++len]=a[1].south;
for(i = 2; i <= n; i ++ )
{
int q = upper_bound(d + 1, d + 1 + len, a[i].south) - d;
d[q] = a[i].south;
if (q > len) len ++ ;
}
cout << len - 1 << endl;
return 0;
}