#include #include #include #include #include #include #include /* dp[i][j]=字符串A前i个与字符串B前j个 5 1 4 2 5 -12 4 -12 1 2 4 */ using ll = int64_t; #define gdp(i,j,k)(std::get(dp[i][j])) int main(){ std::iostream::sync_with_stdio(false); std::cin.tie(nullptr); ll n,m; std::cin>>n; std::vector a(n+1); for(ll i=1;i<=n;i++)std::cin>>a[i]; std::cin>>m; std::vector b(m+1); for(ll j=1;j<=m;j++)std::cin>>b[j]; std::vector>>dp(n+1,std::vector>(m+1)); for(ll i=1;i<=n;i++){ for(ll j=1;j<=m;j++){ if(a[i]!=b[j]){ gdp(i, j, 0) = gdp(i-1,j,0); gdp(i, j, 1)=i-1; gdp(i, j, 2)=j; }else{ ll maxprev=0; for(ll k=1;k ans2; ans2.reserve(n); // printf("maxi=%lld,maxj=%lld\n",maxi,maxj); while(maxi>0){ ans2.push_back(a[maxi]); ll tmpi=maxi; maxi=gdp(maxi,maxj,1); maxj=gdp(tmpi,maxj,2); } std::cout<