#include <bits/stdc++.h> using namespace std; int main() { int m = 0, n = 0; while(cin >> m) { vector<string> I(m, string()); for(int i = 0; i < m; i++) { cin >> I[i]; } cin >> n; vector<string> R(n, string()); for(int i = 0; i < n; i++) { cin >> R[i]; } map<int, vector<pair<int, string>>> mapR; for(auto s : R) { int snum = stoi(s);//关键字为int auto ret = mapR.insert(make_pair(snum, vector<pair<int, string>>())); if(ret.second) { auto &vec = mapR[snum]; for(int i = 0; i < I.size(); i++) { if(I[i].find(s) != string::npos)//查找被包含关系很方便 { vec.push_back(make_pair(i, I[i])); } } if(vec.empty())//删除 { mapR.erase(snum); } } } int sumnum = 0; for(auto e : mapR) { sumnum += (e.second.size() + 1) * 2; } cout << sumnum << " "; for(auto e : mapR) { cout << e.first << " " << e.second.size() << " "; for(auto p : e.second) { cout << p.first << " " << p.second << " "; } } cout << endl; } }