
1 #include<bits/stdc++.h>
2 //#include <sstream> // if want to use stringstream
3 using namespace std;
4
5 const int N=310;
6
7 struct node{
8 string c;
9 bool has_c,can_has_c,bk,vis;
10 }a[N];
11 string s,c;
12 int sl;
13
14 void init()
15 {
16 getline(cin,s);
17 sl=s.size();
18 for(int i=1;i<=26;i++) a[i].bk=0,a[i].vis=0,a[i].can_has_c=0,a[i].has_c=0;
19 for(int i=0;i<sl;i++)
20 {
21 int now=s[i]-'a'+1;
22 a[now].bk=1;
23 a[now].can_has_c=0;
24 if(i+1<sl && s[i+1]==':')
25 {
26 i++;
27 a[now].can_has_c=1;
28 }
29 }
30 }
31
32 void getnext()
33 {
34 c="";
35 while(sl<s.size())
36 {
37 if(s[sl]==' ' || s[sl]=='\n') {sl++;break;}
38 c+=s[sl];sl++;
39 //if(!((s[sl]>='a' && s[sl]<='z') || (s[sl]>='0' && s[sl]<='9') || s[sl]=='-')) {sl++;break;}
40 }
41 }
42
43 void solve()
44 {
45 for(int i=1;i<=26;i++) a[i].has_c=0,a[i].vis=0;
46 sl=0;
47 getline(cin,s);
48 getnext();
49 while(1)
50 {
51 getnext();
52 if(c.size()==0) return;
53 if(c[0]=='-')
54 {
55 int now=c[1]-'a'+1;
56 if(!a[now].bk) return;
57 a[now].vis=1;
58 if(a[now].can_has_c)
59 {
60 getnext();
61 if(c.size()==0)
62 {
63 if(!a[now].has_c) a[now].vis=0;
64 return ;
65 }
66 a[now].has_c=1;
67 a[now].c=c;
68 }
69 }
70 else return ;
71 }
72 }
73
74 void output()
75 {
76 for(int i=1;i<=26;i++)
77 {
78 if(a[i].vis) printf(" -%c",i-1+'a');
79 if(a[i].has_c) cout << ' ' << a[i].c;
80 }
81 cout << endl;
82 }
83
84 int main()
85 {
86 //freopen("a.in","r",stdin);
87 init();
88 int T;
89 scanf("%d",&T);getline(cin,s);
90 for(int TT=1;TT<=T;TT++)
91 {
92 printf("Case %d:",TT);
93 solve();
94 output();
95 }
96 return 0;
97 }