#include <bits/stdc++.h>
using namespace std;
int n,m;
int main()
{
freopen("cmlsc.in","r",stdin);
freopen("cmlsc.out","w",stdout);
cin>>n>>m;
vector<int> a(n+1);
vector<int> b(m+1);
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=m;i++)cin>>b[i];
vector<vector<int>> dp(n+1,vector<int>(m+1,0));
for(int i=1;i<=n;i++)
{
for(int 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';
vector<int> sol;
int i=n,j=m;
while(i>0&&j>0)
{
if(a[i]==b[j])
{
sol.push_back(a[i]);
i--;
j--;
}
else
if(dp[i-1][j]>=dp[i][j-1])i--;
else
j--;
}
reverse(sol.begin(),sol.end());
for(int x:sol) cout<<x<<' ';
return 0;
}