#include #include #include #include #include #include #include #include #include using ll = int64_t; std::ostream& operator<<(std::ostream& os, const std::pair& p){ os << "{ " << p.first << ", " << p.second << " }"; return os; } #define pa(a)do{for(auto v:(a)){std::cout<> n; std::vector c(n); std::vector> input(n); for (ll i = 0; i < n; i++){ std::cin >> input[i].first >> input[i].second; } std::sort(input.begin(), input.end()); for (ll i = 0; i < input.size(); i++){ c[i] = input[i].second; } std::vector f; f.reserve(n); for (ll x : c) { auto it = std::lower_bound(f.begin(), f.end(), x); if (it == f.end()) { f.push_back(x); } else { *it = x; } pa(f); } std::cout << f.size() << std::endl; return 0; }