//https://c...content-available-to-author-only...s.fi/problemset/task/3403
/*
dp[i][j] dãy cong tăng dài nhất khi xét đến phần tử thứ i của dãy 1 và phần tử thứ j của dãy 2
*/
#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 1005;
long long n,m;
long long a[MaxN],b[MaxN];
long long dp[MaxN][MaxN];
vector<long long> res;
void input()
{
cin >> n >> m;
for(long long i=1;i<=n;i++) cin >> a[i];
for(long long i=1;i<=m;i++) cin >> b[i];
}
void solve()
{
for(long long i=1;i<=n;i++)
{
for(long long j=1;j<=m;j++)
{
if(a[i]==b[j])
dp[i][j]=dp[i-1][j-1]+1;
else
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
}
}
cout << dp[n][m] << '\n';
long long i=n,j=m;
while(i>0&&j>0)
{
if(a[i]==b[j])
{
res.push_back(a[i]);
i--;
j--;
}
else
{
if(dp[i-1][j]>=dp[i][j-1])
i--;
else
j--;
}
}
reverse(res.begin(),res.end());
for(long long x:res)
cout << x << ' ';
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
input();
solve();
}
Ly9odHRwczovL2MuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnMuZmkvcHJvYmxlbXNldC90YXNrLzM0MDMKLyoKZHBbaV1bal0gZMOjeSBjb25nIHTEg25nIGTDoGkgbmjhuqV0IGtoaSB4w6l0IMSR4bq/biBwaOG6p24gdOG7rSB0aOG7qSBpIGPhu6dhIGTDo3kgMSB2w6AgcGjhuqduIHThu60gdGjhu6kgaiBj4bunYSBkw6N5IDIKKi8KI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGxvbmcgbG9uZyBNYXhOID0gMTAwNTsKCmxvbmcgbG9uZyBuLG07CmxvbmcgbG9uZyBhW01heE5dLGJbTWF4Tl07CmxvbmcgbG9uZyBkcFtNYXhOXVtNYXhOXTsKdmVjdG9yPGxvbmcgbG9uZz4gcmVzOwoKdm9pZCBpbnB1dCgpCnsKICAgIGNpbiA+PiBuID4+IG07CiAgICBmb3IobG9uZyBsb25nIGk9MTtpPD1uO2krKykgY2luID4+IGFbaV07CiAgICBmb3IobG9uZyBsb25nIGk9MTtpPD1tO2krKykgY2luID4+IGJbaV07Cn0KCnZvaWQgc29sdmUoKQp7CiAgICBmb3IobG9uZyBsb25nIGk9MTtpPD1uO2krKykKICAgIHsKICAgICAgICBmb3IobG9uZyBsb25nIGo9MTtqPD1tO2orKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKGFbaV09PWJbal0pCiAgICAgICAgICAgICAgICBkcFtpXVtqXT1kcFtpLTFdW2otMV0rMTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZHBbaV1bal09bWF4KGRwW2ktMV1bal0sZHBbaV1bai0xXSk7CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgZHBbbl1bbV0gPDwgJ1xuJzsKCiAgICBsb25nIGxvbmcgaT1uLGo9bTsKCiAgICB3aGlsZShpPjAmJmo+MCkKICAgIHsKICAgICAgICBpZihhW2ldPT1iW2pdKQogICAgICAgIHsKICAgICAgICAgICAgcmVzLnB1c2hfYmFjayhhW2ldKTsKICAgICAgICAgICAgaS0tOwogICAgICAgICAgICBqLS07CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGlmKGRwW2ktMV1bal0+PWRwW2ldW2otMV0pCiAgICAgICAgICAgICAgICBpLS07CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGotLTsKICAgICAgICB9CiAgICB9CgogICAgcmV2ZXJzZShyZXMuYmVnaW4oKSxyZXMuZW5kKCkpOwoKICAgIGZvcihsb25nIGxvbmcgeDpyZXMpCiAgICAgICAgY291dCA8PCB4IDw8ICcgJzsKfQoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKCiAgICBpbnB1dCgpOwogICAgc29sdmUoKTsKfQo=