OI XVIII - tem

// 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;
}