#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100010;
struct Range{ // 区间的结构体
int l,r;
bool operator<(const Range &w)const{ // 重载小于运算符: 为了sort用
return r<w.r;
}
}range[N];
int n,a,b;
int main()
{
cin>>n;
for (int i = 0; i < n; i ++ )
{
scanf("%d%d", &a, &b);
range[i]={a,b};
}
sort(range,range+n); // 按右端点排序(小到大)
int res=0,ed=-2e9; // ed : 区间端点,因为刚开始还没有设置 。所以设置非常小的数
for (int i = 0; i < n; i ++ )
{
if(range[i].l>ed) // 如果当前区间的左端点在选出点的右边,说明当前区间和之前区间不重合, 需要个数++。 然后把选出点,设置为当前区间的右端点。
{
res++;
ed=range[i].r;
}
}
cout << res;
return 0;
}