#include <bits/stdc++.h> using namespace std; int n,m,p,cnt,today,is_guilty[110],may[110]; map<string,int> mp,week; map<int,string> guilty; struct zhengci{int id; string s,who;}z[110]; bool vis[110],flag; void check(){ memset(is_guilty,-1,sizeof(is_guilty)); today=0; for(int i=1;i<=cnt;i++){ int u=mp[z[i].who],id=z[i].id; string v=z[i].s; if(!vis[u]){ if(id==1){ if(is_guilty[mp[v]]==0)return; is_guilty[mp[v]]=1; } else if(id==2){ if(is_guilty[mp[v]]==1)return; is_guilty[mp[v]]=0; } else { if(!today)today=week[v]; else if(today!=week[v])return; } } else { if(id==2){ if(is_guilty[mp[v]]==0)return; is_guilty[mp[v]]=1; } else if(id==1){ if(is_guilty[mp[v]]==1)return; is_guilty[mp[v]]=0; } else { if(!today)continue; else if(today==week[v])return; } } } int sum=0,maybe; for(int i=1;i<=n;i++)if(is_guilty[i]==1)sum++,maybe=i; if(sum>1)flag=1; if(sum==1)may[maybe]=1; else if(sum==0){ for(int i=1;i<=n;i++)if(is_guilty[i]==0)sum++; if(sum==n-1)for(int i=1;i<=n;i++)if(is_guilty[i]!=0)may[i]=1; if(sum!=n-1)flag=1; } } void dfs(int now,int sum){ if(sum==m){check(); return;} for(int i=now+1;i<=n;i++){ vis[i]=1; dfs(i,sum+1); vis[i]=0; } } int main(){ week["Monday"]=1; week["Tuesday"]=2; week["Wednesday"]=3; week["Thursday"]=4; week["Friday"]=5; week["Saturday"]=6; week["Sunday"]=7; scanf("%d%d%d",&n,&m,&p); for(int i=1;i<=n;i++){ string s; cin>>s; guilty[i]=s; s+=':'; mp[s]=i; } for(int i=1;i<=p;i++){ string name,zc; cin>>name; getchar(); getline(cin,zc); zc.erase(zc.end()-1); if(zc=="I am guilty."){z[++cnt].id=1;z[cnt].s=name;z[cnt].who=name;} else if(zc=="I am not guilty."){z[++cnt].id=2;z[cnt].s=name;z[cnt].who=name;} else { int t=0; string s=""; while(zc[t]!=' ')s+=zc[t++]; if(mp[s+':']){ if(zc==s+" is guilty."){z[++cnt].id=1;z[cnt].s=s+':';z[cnt].who=name;} else if(zc==s+" is not guilty."){z[++cnt].id=2;z[cnt].s=s+':';z[cnt].who=name;} } else if(s=="Today"){ s+=' '; t++; while(zc[t]!=' ')s+=zc[t++]; if(s=="Today is"){ string ss=""; t++; while(zc[t]!='.')ss+=zc[t++]; if(week[ss]){z[++cnt].id=3;z[cnt].s=ss;z[cnt].who=name;} } } } } //for(int i=1;i<=cnt;i++)cout<<z[i].id<<':'<<z[i].who<<z[i].s<<endl; dfs(0,0); int sum=0,maybe; for(int i=1;i<=n;i++)if(may[i])sum++,maybe=i; if(sum==0 && !flag)puts("Impossible"); else if(sum==1)cout<<guilty[maybe]<<endl; else puts("Cannot Determine"); return 0; } /* 3 1 5 MIKE CHARLES KATE MIKE: I am guilty. MIKE: I am not guilty. CHARLES: MIKE is guilty. CHARLES: MIKE is not guilty. KATE: Today is Monday. */