``` 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]; ...