#include <bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
constexpr int N = 1e6 + 10, inf = 0x3f3f3f3f;
int a[N];
#define x first
#define y second
typedef pair<int, int> pii;
pii pre[N];
priority_queue<int, vector<int>, greater<int>> heap;
void solve()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> pre[i].x >> pre[i].y;
}
sort(pre + 1, pre + n + 1);
rep(i, 1, n)
{
auto r = pre[i];
//因为是左端点从小到大排序
if (heap.empty() || heap.top() >= r.x) // 如果最小的右端点都大于了当前的右边界,
{
heap.push(r.y);
}
// 放进去更新这个组,
else//与当前集合没有交集;
{
int t = heap.top();
heap.pop();
heap.push(r.y);
}
}
cout << heap.size();
}
signed main()
{
ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int T = 1;
while (T--)
{
solve();
}
return 0;
}