# include<stdio.h>
# include<stdlib.h>
# include<iostream.h>
typedef struct matrix
{
int A[200][200];
}MA;
void LCS_LENGTH(int m,int n,char A[],char B[],MA &X,MA &Y)
{
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
X.A[i][j]=0;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
if(A[i]==B[j])
{
X.A[i][j]=X.A[i-1][j-1]+1;
Y.A[i][j]=2;
}
else if(X.A[i-1][j]>=X.A[i][j-1])
{
X.A[i][j]=X.A[i-1][j];
Y.A[i][j]=1;
}
else
{
X.A[i][j]=X.A[i][j-1];
Y.A[i][j]=0;
}
}
}
void LCS(MA &Y,int m,int n,char A[])
{
if(m==0||n==0)
;
else
if(Y.A[m][n]==2)
{
LCS(Y,m-1,n-1,A);
printf("%c",A[m]);
}
else if(Y.A[m][n]==1)
LCS(Y,m-1,n,A);
else
LCS(Y,m,n-1,A);
}
int main()
{
char A[256],B[256];
int i;
int m,n;
cout<<"m:"<<endl;
cin>>m;
for(i=1;i<=m;i++)
cin>>A[i];
cout<<"n:"<<endl;
cin>>n;
for(i=1;i<=n;i++)
cin>>B[i];
MA X,Y;
LCS_LENGTH(m,n,A,B,X,Y);
LCS(Y,m,n,A);
return 0;
}