// // Created by darian on 07.06.24. // #include using namespace std; using ll = long long; int main() { int n; cin >> n; vector towers; for (int i{}; i < n; i++) { ll a; cin >> a; auto it = std::lower_bound(towers.begin(), towers.end(), a+1); if (it == towers.begin()) { if (towers.size()) towers[0] = a; else towers.insert(towers.begin(), a); } else if (it == towers.end()) { towers.push_back(a); } else { towers[it - towers.begin()] = a; } } cout << towers.size() << endl; }