#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
pair<int,string> sentence[130];
string name[25];
int n,m,p,state[130];
string week[7] = {
"Today is Monday.",
"Today is Tuesday.",
"Today is Wednesday.",
"Today is Thursday.",
"Today is Friday.",
"Today is Saturday.",
"Today is Sunday."};
int get_id(string str){
for(int i=0;i<m;i++)if(str==name[i])return i;
return -1;
}
int judge(int day,int killer,int now,string str){//1假话,0真话
if(str=="I am guilty.")return killer!=now;
if(str=="I am not guilty.")return killer==now;
for(int i=0;i<7;i++)
if(str==week[i])return day!=i;
for(int i=0;i<m;i++)if(name[i]+" is guilty."==str)return killer!=i;
for(int i=0;i<m;i++)if(name[i]+" is not guilty."==str)return killer==i;
return -1;
}
bool check(int x,int y){//人,日期
memset(state,-1,sizeof state);
for(int i=0;i<p;i++){
pair<int,string> sen=sentence[i];
int st=judge(x,y,sen.first,sen.second),t=sen.first;
if(st==1){
if(state[t]==0)return false;
else if(state[t]==-1)state[t]=1;
}else if(st==0){
if(state[t]==1)return false;
else if(state[t]==-1)state[t]=0;
}
}
int fake=0,other=0;
for(int i=0;i<m;i++){
if(state[i]==1)fake++;
if(state[i]==-1)other++;
}
return fake<=n&&fake+other>=n;
}
int main(){
cin>>m>>n>>p;
for(int i=0;i<m;i++)cin>>name[i];
for(int i=0;i<p;i++){
string s,t;
cin>>t;
t.erase(t.length()-1);
getline(cin,s);
s.erase(s.begin());
sentence[i]=make_pair(get_id(t),s);
}
int cnt=0,p=-1;
for(int i=0;i<7;i++){
cnt=0;
for(int j=0;j<m;j++){
if(check(i,j)){
p=j;
cnt++;
}
if(cnt>1){
cout<<"Cannot Determine";
break;
}
}
}
if(cnt<=1){
if(p==-1)cout<<"Impossible";
else cout<<name[p];
}
return 0;
}