#include<iostream> #include<string> #include<vector> 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); } } 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 main(){ int s; while(cin>>s){ vector<int> vl; vector<int> vr; for(int i=0;i<s;i++){ int s2; cin>>s2; vl.push_back(s2); } cin>>s; for(int i=0;i<s;i++){ 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; } }