#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);
}

}