public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) { 
            int n = in.nextInt();
            int[] array = new int[n];
            for(int i =0 ; i < n; i++) {
                array[i] = in.nextInt();
            }
            System.out.println(LLS(array,n));
        }
    }
    public static int LLS(int[] array, int n ) {
        int[] dp = new int[n];
        dp[0] = 1;
          int res = 1;
        for(int i = 1; i < n; i++) {
            //相当于dp数组每一个元素初始为1;
            dp[i] = 1;       
            for(int j = 0; j < i; j++) {
                //只要后面的数大于前面的任意数,就可以在后面拼接,大小加一
                if(array[i] > array[j]) {
                    //取最大拼接数
                    dp[i] = Math.max(dp[i] , dp[j]+1);
                }
            }
            //取最大数
            res = Math.max(res, dp[i]);

        }
        return res;
    }
}