``` public static int maxn = 101;

    public static int dp(int cur, int[] d, int[] v, int n, int[] a) {
        if (v[cur] != 0) return d[cur];
        v[cur] = 1;
        d[cur] = 1;
        for (int i = 0; i < n; i++)
            if (cur > i && a[cur] > a[i]) {
                d[cur] = Math.max(d[cur], dp(i, d, v, n, a)) + 1;
            }
        return d[cur];
    }

    //2 5 1 5 4 5
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            int[] v = new int[maxn];
            int[] d = new int[maxn];
            int a[] = new int[maxn];
            int n = in.nextInt();
            for (int i = 0; i < n; i++) {
                a[i] = in.nextInt();
            }
            dp(n - 1, d, v, n, a);
            int best = 0;
            for (int i = 0; i < n; i++) {
                best = Math.max(best, d[i]);
            }
            System.out.println(best);
        }
    }