#include<bits/stdc++.h>
using namespace std;
map<string,int> d,g;
string rg[110];
int st[110];
string says[110];
int lie[25];
int is_true(int u,int prison,int day){
string s=says[u];
if(s=="I am guilty."){
if(prison==st[u])return 1;
else return 0;
}
if(s=="I am not guilty."){
if(prison==st[u])return 0;
else return 1;
}
int blame=s.find("is guilty.");
if(blame!=-1){
string beblame=s.substr(0,blame-1);
if(g[beblame]){
if(prison==g[beblame])return 1;
else return 0;
}
}
int defend=s.find("is not guilty.");
if(defend!=-1){
string bedefend=s.substr(0,defend-1);
if(g[bedefend]){
if(prison==g[bedefend])return 0;
else return 1;
}
}
int date=s.find("Today is");
if(date!=-1){
string dating=s.substr(date+9);
if(d[dating]){
if(d[dating]==day)return 1;
else return 0;
}
}
return -1;
}
int main(){
d["Monday."]=1;
d["Tuesday."]=2;
d["Wednesday."]=3;
d["Thursday."]=4;
d["Friday."]=5;
d["Saturday."]=6;
d["Sunday."]=7;
int n,m,p;
cin>>n>>m>>p;
for(int i=1;i<=n;i++){
string s;
cin>>s;
g[s]=i;
rg[i]=s;
}
string s;
getline(cin,s);
for(int i=1;i<=p;i++){
getline(cin,s);
while(s[s.length()-1]=='\r' || s[s.length()-1]=='\n'){
s[s.length()-1]=0;
}
string name=s.substr(0,s.find(":"));
st[i]=g[name];
string say=s.substr(s.find(":")+2);
says[i]=say;
}
int ans=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=7;j++){
memset(lie,-1,sizeof(lie));
for(int k=1;k<=p;k++){
int res=is_true(k,i,j);
if(res==-1)continue;
if(res==0)lie[k]=0;
if(res==1)lie[k]=1;
}
int cnt=0;
for(int k=1;k<=n;k++){
if(lie[k]==0)cnt++;
}
if(cnt==m){
if(ans && ans!=i){
puts("Cannot Determine");
return 0;
}else ans=i;
}
}
}
if(ans==0)puts("Impossible");
else cout<<rg[ans];
return 0;
}