#include <bits/stdc++.h>
using namespace std;
int m,n,p,flag[105],name[105],cnt,zhen;
string ans;
string x[105];
map<string,int>mp;
map<int,string>f;
string today[10]={"","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
bool vjudge(int id,bool x)
{
if(flag[id]==-1)
{
flag[id]=x;
if(x==true)cnt++;
else zhen++;
}
else if(flag[id]!=x)return true;
if(cnt>n||zhen>m-n)return true;
return false;
}
void check(string u,int g)
{
memset(flag,-1,sizeof(flag));
cnt=0,zhen=0;
for(int i=1;i<=p;i++)
{
string talk=x[i];
if(talk=="I am guilty.")
{
if(vjudge(name[i],name[i]!=g))return;
}
else if(talk=="I am not guilty.")
{
if(vjudge(name[i],name[i]==g))return;
}
int pos=talk.find("is guilty.");
if(pos!=string::npos)
{
string jyq=talk.substr(0,pos-1);
if(vjudge(name[i],mp[jyq]!=g))return;
}
pos=talk.find("is not guilty.");
if(pos!=string::npos)
{
string OIbishop=talk.substr(0,pos-1);
if(vjudge(name[i],mp[OIbishop]==g))return;
}
pos=talk.find("Today is");
if(pos!=string::npos)
{
if(vjudge(name[i],talk!=u))return;
}
}
if(ans!=f[g]&&ans!="")
{
cout<<"Cannot Determine"<<endl;
exit(0);
}
else
{
ans=f[g];
}
}
int main()
{
cin>>m>>n>>p;
for(int i=1;i<=m;i++)
{
string s;
cin>>s;
mp[s]=i;
f[i]=s;
}
for(int i=1;i<=p;i++)
{
string a;
cin>>a;
name[i]=mp[a.substr(0,a.size()-1)];
getline(cin,a);
if((*a.begin())==' ')a=a.substr(1);
if((*a.rbegin())=='\n')a=a.substr(0,a.size()-1);
x[i]=a;
}
for(int i=1;i<=7;i++)
{
for(int j=1;j<=m;j++)
{
check("Today is "+today[i]+".",j);
}
}
if(ans=="")cout<<"Impossible";
else cout<<ans;
return 0;
}