#include<stdio.h>
int f_max(int a, int b){
return a>b?a:b;
}
int main(){
int number;
while(scanf("%d", &number) != EOF){
int*cub=(int*)malloc(sizeof(int)*number);
for(int i=0; i<number; i++)scanf("%d", &cub[i]);
int*dp=(int*)malloc(sizeof(int)*number);
int max = 1;
for(int i=0; i<number; i++)dp[i]=1;
for(int i=1; i<number; i++)
{
for(int j=0; j<i; j++){
if(cub[i]>cub[j]){
dp[i]=f_max(dp[i], dp[j]+1);
max = f_max(max, dp[i]);
}
}
}
printf("%d\n", max);
}
}