#include <bits/stdc++.h>
using namespace std;
int n, a[100005], dp[100005];
int main() {
  cin >> n;
  for (int i = (0); i < (n); i++) cin >> a[i];
  fill(dp, dp + 100005, 114514810);
  for (int i = (0); i < (n); i++) *lower_bound(dp, dp + n, a[i]) = a[i];
  cout << lower_bound(dp, dp + n, 114514810) - dp << endl;
}
