#include <bits/stdc++.h>
using namespace std;
long long a[100005], t[100005], n;
long long query(long long i) {
  long long ans = 0;
  while (i) {
    ans = max(ans, t[i]);
    i -= (i & -i);
  }
  return ans;
}
void update(long long i) {
  long long val = query(i - 1) + 1;
  while (i <= n) {
    t[i] = max(t[i], val);
    i += (i & -i);
  }
}
int32_t main() {
  long long i;
  cin >> n;
  for (i = 1; i <= n; i++) cin >> a[i];
  for (i = 1; i <= n; i++) update(a[i]);
  cout << query(n) << "\n";
}
