#include<iostream> #include<vector> #include<set> #include<sstream> using namespace std; //s1是否包含s2 bool isContained(string s1, string s2){ if(s1.size()<s2.size()) return false; for(int i=0;i<=s1.size()-s2.size();i++){ string temp=s1.substr(i,s2.size()); if(temp==s2) return true; } return false; } int main(){ vector<int> I; set<int> R; int n,temp; while(cin>>n){ I.clear(); R.clear(); while(n--){ cin>>temp; I.push_back(temp); } cin>>n; while(n--){ cin>>temp; R.insert(temp); } vector<vector<int>> res; for(auto i=R.begin();i!=R.end();i++){ stringstream ss; ss<<*i; vector<int> index; for(int j=0;j<I.size();j++){ stringstream s; s<<I[j]; if(isContained(s.str(), ss.str())){ index.push_back(j); } } res.push_back(index); } int count=0; for(int i=0;i<res.size();i++){ if(!res[i].empty()){ count+=2; count+=res[i].size()*2; } } cout<<count<<" "; int j=0; for(auto i=R.begin();i!=R.end();i++){ if(!res[j].empty()){ cout<<*i<<" "<<res[j].size()<<" "; for(int k=0;k<res[j].size();k++) cout<<res[j][k]<<" "<<I[res[j][k]]<<" "; } j++; } cout<<endl; } return 0; }