#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; vector> R(n); for (auto &r : R) cin >> r.first >> r.second; sort(R.begin(),R.end(),[](auto a, auto b){ if (a.second == b.second) return a.first < b.first; return a.second < b.second; }); multiset S; for (auto [l,r] : R){ auto it = S.upper_bound(l); if (it != S.begin()){ S.erase(--it); } S.insert(r); } cout << S.size()-1 << endl; return 0; }