#include <bits/stdc++.h>
int dp(int i, int n, int a[], int d[]);
int main() {
  int n, i, t, ans = 0;
  scanf("%d", &n);
  int a[n], d[n];
  for (i = 0; i < n; i++) scanf("%d", &a[i]);
  memset(d, 0, sizeof(d));
  d[n - 1] = 1;
  for (i = 0; i < n; i++) {
    t = dp(i, n, a, d);
    ans = ans > t ? ans : t;
  }
  printf("%d\n", ans);
  return 0;
}
int dp(int i, int n, int a[], int d[]) {
  int j;
  if (i == n) return 0;
  if (d[i] > 0) return d[i];
  d[i] = 1;
  for (j = i + 1; j < n; j++)
    if (a[i] < a[j])
      d[i] = d[i] > dp(j, n, a, d) + 1 ? d[i] : dp(j, n, a, d) + 1;
  return d[i];
}
