1 #include<time.h>
2 #include <cstdio>
3 #include <iostream>
4 #include<algorithm>
5 #include<math.h>
6 #include <string.h>
7 #include<vector>
8 #include<queue>
9 using namespace std;
10
11 int dp[3005][3005],num[100005],a[100005];
12
13 int main()
14 {
15 int n;
16 while(scanf("%d",&n)!=EOF)
17 {
18 for(int i=0;i<n;i++)
19 {
20 scanf("%d",&a[i]);
21 num[i]=a[i];
22 }
23
24 sort(a,a+n);
25 dp[0][0]=0;
26 for(int i=0;i<n;i++)
27 for(int j=0;j<n;j++)
28 {
29 if(a[i]==num[j])
30 dp[i+1][j+1]=dp[i][j]+1;
31 else
32 dp[i+1][j+1]=max(dp[i+1][j],dp[i][j+1]);
33 }
34 printf("%d\n",dp[n][n]);
35 }
36 return 0;
37 }