include

include

include

using namespace std;
//快排
void qsort(vector<int>& v,int low,int high){
if(low<high){
int key=v[low];
int l=low,r=high;
while(l<r){
while(l<r && v[r]>=key) r--;
if(l<r) v[l]=v[r];
while(l<r && v[l]<=key) l++;
if(l<r) v[r]=v[l];
}
v[l]=key;
qsort(v,low,l-1);
qsort(v,l+1,high);
}
}
//判断L数组中是否包含当前数字,并返回包含的包含的数字位置
pair<int,vector<int>> numinl(vector<int> vl,int n){
vector<int> vec;
int cnt=0;
string s=to_string(n);
for(int i=0;i<vl.size();i++){
if(to_string(vl[i]).find(s)!=string::npos){
vec.push_back(i);
cnt++;
}
}
return make_pair(cnt, vec);
}</int></int></int></int>

int main(){
int s;
while(cin>>s){ //注意输入数据是多组
vector<int> vl;
vector<int> vr;
for(int i=0;i<s;i++){ //L数组
int s2;
cin>>s2;
vl.push_back(s2);
}
cin>>s;
for(int i=0;i<s;i++){ //R数组
int s2;
cin>>s2;
vr.push_back(s2);
}
qsort(vr,0,vr.size()-1);
vector<int> ans; //保存要输出的数字
for(int i=0;i<vr.size();i++){
if(i>0 && vr[i]==vr[i-1]) continue; //过滤重复的
int cnt=numinl(vl,vr[i]).first;
vector<int> pos=numinl(vl,vr[i]).second;
if(cnt!=0){
ans.push_back(vr[i]); //要查找的数字
ans.push_back(cnt); //数量
for(int x:pos){
ans.push_back(x); //位置
ans.push_back(vl[x]); //包含的数字
}
}
}
cout<<ans.size()<<' ';
for(int i=0;i<ans.size();i++){
cout<<ans[i]<<' ';
}
cout<<endl; //记得换行
}
}</int></int></int></int>