#include <iostream> #include <set> #include <string> #include <vector> using namespace std; int main() { int n,m; while (cin >> n) { // 注意 while 处理多个 case vector<string> vecI(n,""); set<int> setR; string tmpStr; int tmp; vector<int> legal; vector<vector<int>> indexR; for(int i=0;i<n;i++){ cin >>tmpStr; vecI[i]=tmpStr; // cout << tmpStr <<' '; } // cout <<endl; cin >>m; for(int i=0;i<m;i++){ cin >> tmp; setR.insert(tmp); } // for(auto t:setR) cout << t <<' '; for(auto r:setR){ string R=to_string(r); // cout << R <<endl; vector<int> tmpVec; int flag=0;//默认没有元素 for(int i=0;i<n;i++){ if(vecI[i].find(R) != string::npos){ tmpVec.push_back(i); // cout << i << ' ' ; flag=1; } } // cout <<endl; if(flag){ legal.push_back(r); indexR.push_back(tmpVec); } } int cnt=0; for(auto t:indexR){ cnt+=t.size()*2; // cout << t.size() <<' '; } cnt += indexR.size()*2; cout << cnt <<' '; int index=0; for(auto t:indexR){ cout << legal[index] << ' ' << t.size() << ' '; for(auto i:t){ cout << i << ' ' << vecI[i] << ' '; } index++; } } } // 64 位输出请用 printf("%lld")