#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int a[5005];
int b[5005];
int path[5005];
int prev[5005];
int need[5005];
int main()
{
int x,y;
memset(a,0, sizeof(a));
memset(b,0, sizeof(b));
scanf("%d",&x);
for(int i=0;i<x;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&y);
for(int i=0;i<y;i++)
{
scanf("%d",&b[i]);
}
for(int i=0;i<5005;i++)
{
path[i]=0;
prev[i]=-1;
}
int loc_pos=-1;
int temp=0;
int max=0;
int max_pos=-1;
for(int i=0;i<x;i++)
{
temp=0;
loc_pos=-1;
for(int j=0;j<y;j++)
{
if((b[j]<a[i])&& temp<path[j])
{
temp=path[j];
loc_pos=j;
}
if(a[i]==b[j])
{
path[j]=temp+1;
prev[j]=loc_pos;
if(max<path[j])
{
max=path[j];
max_pos=j;
}
}
}
}
cout<<max<<endl;
int j=0;
while(max_pos!=-1)
{
j++;
need[j]=b[max_pos];
max_pos=prev[max_pos];
}
for(int i=j;i>0;i--)
{printf("%d ",need[i]);}
cout<<endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0ZGlvLmg+CiNpbmNsdWRlPHN0cmluZy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGFbNTAwNV07CmludCBiWzUwMDVdOwppbnQgcGF0aFs1MDA1XTsKaW50IHByZXZbNTAwNV07CmludCBuZWVkWzUwMDVdOwoKCmludCBtYWluKCkKewogICAgaW50IHgseTsKICAgIAogICAgbWVtc2V0KGEsMCwgc2l6ZW9mKGEpKTsKICAgIG1lbXNldChiLDAsIHNpemVvZihiKSk7CiAgICBzY2FuZigiJWQiLCZ4KTsKICAgIGZvcihpbnQgaT0wO2k8eDtpKyspCiAgICB7CiAgICAgICAgICAgIHNjYW5mKCIlZCIsJmFbaV0pOwogICAgICAgICAgICB9CiAgICBzY2FuZigiJWQiLCZ5KTsKICAgIGZvcihpbnQgaT0wO2k8eTtpKyspCiAgICB7CiAgICAgICAgICAgIHNjYW5mKCIlZCIsJmJbaV0pOwogICAgfQogICAgZm9yKGludCBpPTA7aTw1MDA1O2krKykKICAgIHsKICAgICAgICAgICAgcGF0aFtpXT0wOwogICAgICAgICAgICBwcmV2W2ldPS0xOwogICAgICAgICAgICB9CiAgICAgaW50IGxvY19wb3M9LTE7CiAgICAgaW50IHRlbXA9MDsKICAgICBpbnQgbWF4PTA7CiAgICAgaW50IG1heF9wb3M9LTE7CiAgICAgICAgICAgZm9yKGludCBpPTA7aTx4O2krKykKICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICB0ZW1wPTA7CiAgICAgICAgICAgICAgICAgICBsb2NfcG9zPS0xOwogICAgICAgICAgICAgICAgICAgZm9yKGludCBqPTA7ajx5O2orKykKICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoKGJbal08YVtpXSkmJiB0ZW1wPHBhdGhbal0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcD1wYXRoW2pdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NfcG9zPWo7ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhW2ldPT1iW2pdKQogICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhbal09dGVtcCsxOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldltqXT1sb2NfcG9zOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobWF4PHBhdGhbal0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heD1wYXRoW2pdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X3Bvcz1qOyAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICB9CiAgICAgICAgICAgY291dDw8bWF4PDxlbmRsOwogICAgICAgICAgIGludCBqPTA7CiAgICAgd2hpbGUobWF4X3BvcyE9LTEpCiAgICAgewogICAgIAlqKys7CiAgICAgCW5lZWRbal09YlttYXhfcG9zXTsKICAgICAJbWF4X3Bvcz1wcmV2W21heF9wb3NdOwogICAgIH0KICAgICAKICAgICBmb3IoaW50IGk9ajtpPjA7aS0tKQogICAgICB7cHJpbnRmKCIlZCAiLG5lZWRbaV0pO30KICAgICAgICAgICBjb3V0PDxlbmRsOwogICAgcmV0dXJuIDA7Cn0K