#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
struct node
{
int x, y;
} a[100010];
int n, f[100010], len;
bool cmp(node x, node y)
{
return x.x < y.x;
}
int main()
{
cin >> n;
for(int i = 1;i <= n; i++)
cin >> a[i].x >> a[i].y;
sort(a + 1, a + n + 1, cmp);
for(int i = 1;i <= n; i++)
{
if(a[i].y > f[len]) f[++len] = a[i].y;
else
{
int p = lower_bound(f + 1, f + len + 1, a[i].y) - f;
f[p] = a[i].y;
}
}
cout << len << endl;
return 0;
}