#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<functional>
#include<vector>
#include<string.h>
using namespace std;
vector<int> vect1;
vector<int> vect2;
const int MAXSIZE = 102;
int dp[MAXSIZE][MAXSIZE];
void getsuseq(vector<int> & vect){
sort(vect.begin(), vect.end(), greater<int>());
vect.resize(distance(vect.begin(), unique(vect.begin(), vect.end())));
}
bool cmp(int a,int b){
if (a%10 == b%10)
return a<b;
else
return a%10<b%10;
}
int main(){
// freopen("in.txt", "r", stdin);
int testcase;
cin>>testcase;
while(testcase--){
memset(dp, 0, sizeof(dp));
vect1.clear(); vect2.clear();
int n1, n2;
cin>>n1>>n2;
int temp;
for (int i = 0; i<n1; i++){
cin>>temp;
vect1.push_back(temp);
}
for (int i = 0; i<n2; i++){
cin>>temp;
vect2.push_back(temp);
}
getsuseq(vect1);
getsuseq(vect2);
int res = 0;
int u = -1;
for (int i = 0; i<vect1.size(); i++){
for (int j = 0; j< vect2.size(); j++){
if (vect1[i] == vect2[j]){
if (i==0||j==0) dp[i][j] = 1;
else dp[i][j] = dp[i-1][j-1]+1;
}
if (dp[i][j]>res){
res = dp[i][j];
u = i;
}
}
}
if (res == 0) cout<<"NONE"<<endl;
else{
vector<int> vect3;
bool flag = true;
for (int i = u-res+1; i<=u; i++){
if (flag){
flag = false;
cout<<vect1[i];
}else{
cout<<" "<<vect1[i];
}
vect3.push_back(vect1[i]);
}
cout<<endl;
sort(vect3.begin(), vect3.end(), cmp);
flag = true;
for (int i = 0; i<vect3.size();i++){
if (flag){
flag = false;
cout<<vect3[i];
}else{
cout<<" "<<vect3[i];
}
}
cout<<endl;
}
}
}
01-24
1万+
09-20