// https://szkopul.edu.pl/problemset/problem/6sGsrkO-SrmtogJ7u3RIOj3f/site/?key=statement
// Temperatura
#include <bits/stdc++.h>
using namespace std;
// #define int long long
constexpr int sizik = 1000 * 1001, NINF = INT32_MIN, NINF1 = INT32_MIN + 1;
#define ar std::array
#define pr std::pair
#define vec std::vector
typedef vec<vec<int>> _kra;
int t[4 * sizik];
int a[sizik];
int x[sizik], y[sizik];
void build(int v, int tl, int tr) {
if (tl == tr) {
t[v] = a[tl];
} else {
int tm = (tl + tr) / 2;
build(v * 2, tl, tm);
build(v * 2 + 1, tm + 1, tr);
t[v] = std::max(t[v * 2], t[v * 2 + 1]);
}
}
int query(int v, int tl, int tr, int l, int r) {
if (l > r) return NINF1;
if (l == tl && r == tr) {
return t[v];
}
int tm = (tl + tr) / 2;
return std::max(query(v * 2, tl, tm, l, min(r, tm)), query(v * 2 + 1, tm + 1, tr, max(l, tm + 1), r));
}
void solve() {
int n;
std::cin >> n;
for (int i = 0; i < n; i++) {
std::cin >> x[i] >> y[i];
a[i + 1] = x[i];
}
y[n] = NINF;
build(1, 1, n);
int l = 0, r = -1;
int akt = NINF1, wyn = 0, ans = 1;
while (r < n && l < n) {
if (l > r) {
r = l;
wyn = 1;
akt = x[l];
} else if (akt <= y[r + 1]) {
r++;
wyn++;
akt = std::max(akt, x[r]);
ans = std::max(ans, wyn);
} else {
l++;
wyn--;
int x = query(1, 1, n, l + 1, r + 1);
akt = x;
}
}
std::cout << ans << '\n';
}
int32_t main() {
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
int t = 1;
// std::cin >> t;
for (; t > 0; t--) {
solve();
}
return 0;
}