#include <stdio.h>
#include <string.h>
#define LEN 200
int main() {
int val[LEN];
int n;
while (scanf("%d", &n) != EOF) {
for (int i = 0; i < n; i++) {
scanf("%d", &val[i]);
}
int dp[n];
for (int i = 0; i < n; i++) {
dp[i] = 1;
}
for (int i = n - 2; i >= 0; i--) {
// printf("now i's position is %d value is %d\n", i + 1, val[i]);
int maxstep = 1;
for (int j = i + 1; j < n; j++) {
// printf("now j's position is %d value is %d\n", j + 1, val[j]);
if (val[i] < val[j]) {
if(maxstep < dp[j] + 1) maxstep = dp[j] + 1;
// printf("dp[%d] < dp[%d], %d < %d ,dp[%d]变成%d\n", i, j, val[i], val[j], i,dp[i]);
}
}
dp[i] = maxstep;
}
int max = 0;
for (int i = 0; i < n; i++) {
if (dp[i] > max) max = dp[i];
// printf("dp[%d] is %d\n", i, dp[i]);
}
printf("%d\n", max);
}
return 0;
}