1 #include
2 using namespace std;
3 int n;
4
5 unordered_map<string,set<string>>mp;
6 vector<string>vec;
7 unordered_map<string,int>ch;
8 int main()
9 {
10 cin>>n;
11
12 for(int i=1;i<=n;i++)
13 {
14 int cnt=0;
15 string ch;
16 string s;
17 cin>>ch>>cnt;
18 vec.push_back(ch);
19 while(cnt--)
20 {
21 cin>>s;
22 mp[ch].insert(s);
23 }
24 }
25 cout<endl;
26 for(int i=0;i)
27 {
28 if(ch[vec[i]])continue;
29 ch[vec[i]]=1;
30
31 auto mys=mp[vec[i]];
32 for(auto &q:mp[vec[i]])
33 {
34 string tmp=q;
35 int sz=tmp.size();
36 for(int i=1;i)
37 if(mys.find(tmp.substr(i))!=mys.end())mys.erase(tmp.substr(i));
38 }
39 cout<" "<<mys.size();
40 for(auto &p:mys)cout<<" "<<p;
41 cout<<endl;
42 }
43 return 0;
44 }