The Real Incantation is Their Common Increasing Subsequence of Maximal Possible Length"
#include <iostream>
#include <cstring>#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int st[1000],st2[1000];
int dp[1000];
int len,len2;
int main()
{
int cases;
scanf("%d",&cases);
while(cases--)
{
scanf("%d",&len);
for(int i=1;i<=len;i++)
{
scanf("%d",&st[i]);
}
scanf("%d",&len2);
for(int i=1;i<=len2;i++)
{
scanf("%d",&st2[i]);
}
memset(dp,0,sizeof(dp));
for(int i=1;i<=len;i++)
{
int maxn=0;
for(int j=1;j<=len2;j++)
{
if(st2[j]<st[i])
{
maxn=max(maxn,dp[j]);
}
else if (st2[j]==st[i])
{
dp[j]=max(dp[j],maxn+1);
}
}
}
int ans=0;
for(int i=1;i<=len2;i++)
ans=max(ans,dp[i]);
printf("%d\n",ans);
}
return 0;
}