#include <bits/stdc++.h>
using namespace std;
int LIS(vector<int> A) {
  int N = A.size(), i;
  set<int> s;
  set<int>::iterator k;
  for (i = 0; i < N; i++) {
    if (s.insert(A[i]).second) {
      k = s.find(A[i]);
      k++;
      if (k != s.end()) s.erase(k);
    }
  }
  return s.size();
}
int n, aux;
vector<int> a;
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &aux);
    a.push_back(aux);
  }
  printf("%d\n", LIS(a));
  return 0;
}
