1 /*HDU1423 最长公共递增*/
2 #include <stdio.h>
3 #include <string.h>
4 #include <iostream>
5 using namespace std;
6 #define N 550
7 int dp[N][N];
8 int s[N],t[N];
9
10 int main()
11 {
12 int t1;
13 while(scanf("%d",&t1)!=EOF)
14 {
15 while(t1--)
16 {
17 int n,m;
18 scanf("%d",&n);
19 for(int i=1;i<=n;i++)
20 scanf("%d",&s[i]);
21 scanf("%d",&m);
22 for(int i=1;i<=m;i++)
23 scanf("%d",&t[i]);
24 memset(dp,0,sizeof(dp));
25 int mx=0;
26 for(int i=1;i<=n;i++)
27 {
28 mx=0;
29 for(int j=1;j<=m;j++)
30 {
31 dp[i][j] = dp[i-1][j];
32 if( s[i]>t[j])
33 {
34 mx=dp[i-1][j];
35 }
36 if( s[i] == t[j] )
37 {
38 dp[i][j]=mx+1;
39 }
40 }
41 }
42 mx=-1;
43 int id;
44 for(int i=1;i<=m;i++)
45 if(dp[n][i]>mx)
46 {
47 mx=dp[n][i];
48 }
49 printf("%d\n",mx);
50 if(t1!=0) printf("\n");
51 }
52 }
53 return 0;
54 }