#include <stdio.h>
#include <string.h>
int M,N,P;
char name[20][1000]={'\0'},DAY[8][11]={"","Monday.","Tuesday.","Wednesday.","Thursday.","Friday.","Saturday.","Sunday."};
short allege[20][20]={0},time[20]={0};
void alleging(char *word,char *alleger)
{
short i,body;
char mod[10000];
word++;
for(i=0;i<M;i++)
if(strcmp(name[i],alleger)==0)
{
body=i;
break;
}
if(strcmp("I am guilty.",word)==0)
{
allege[body][body]=-1;
return ;
}
if(strcmp("I am not guilty.",word)==0)
{
allege[body][body]=1;
return ;
}
for(i=0;i<M;i++)
{
strcpy(mod,name[i]);
strcat(mod," is guilty.");
if(strcmp(mod,word)==0)
{
allege[body][i]=-1;
break;
}
}
for(i=0;i<M;i++)
{
strcpy(mod,name[i]);
strcat(mod," is not guilty.");
if(strcmp(mod,word)==0)
{
allege[body][i]=1;
break;
}
}
for(i=1;i<=7;i++)
{
strcpy(mod,"Today is ");
strcat(mod,DAY[i]);
if(strcmp(mod,word)==0)
{
time[body]=i;
break;
}
}
}
short liera(short body,short guilty)
{
short i;
for(i=0;i<guilty;i++)
if(allege[body][i])
return allege[body][i];
if(allege[body][guilty])
return -allege[body][guilty];
for(i=guilty+1;i<M;i++)
if(allege[body][i])
return allege[body][i];
return 0;
}
short turelier(short guilty)
{
short tured[8]={0},islier[20]={0},sum,msum,i,j;
for(i=0;i<M;i++)
islier[i]=liera(i,guilty);
for(i=0;i<M;i++)
if(islier[i]&&time[i])
{
if(islier[i]==1)
{
for(j=1;j<=7;j++)
tured[j]=-1;
tured[time[i]]=1;
break;
}
else
tured[time[i]]=-1;
}
for(i=1;i<=7;i++)
if(tured[i]>=0)
{
sum=0;
msum=0;
if(tured[i]==1)
{
for(j=0;j<M;j++)
if(islier[j]==1||time[j]==i)
sum++;
else if(islier[j]==0&&time[j]==0)
msum++;
if(N>=sum&&N<=sum+msum)
return 1;
else
return 0;
}
else
{
for(j=0;j<M;j++)
if(islier[j]==1||time[j]==i)
sum++;
else if(islier[j]==0&&time[j]==0)
msum++;
if(N>=sum&&N<=sum+msum)
return 1;
}
}
return 0;
}
int main()
{
short i,guilty=-1,j;
char cha[10000]={'\0'},alleger[20];
scanf("%d%d%d",&M,&N,&P);
N=M-N;
for(i=0;i<M;i++)
scanf("%s",name[i]);
for(i=0;i<P;i++)
{
memset(alleger,'\0',20);
memset(cha,'\0',10000);
scanf("%s",alleger);
alleger[strlen(alleger)-1]='\0';
gets(cha);
for(j=0;j<10000;j++)
if(cha[j]=='\n'||cha[j]=='\r')
cha[j]='\0';
alleging(cha,alleger);
}
for(i=0;i<M;i++)
if(turelier(i))
{
if(guilty!=-1)
{
printf("Cannot Determine");
return 0;
}
else
guilty=i;
}
if(guilty==-1)
printf("Impossible");
else
printf("%s\n",name[guilty]);
return 0;
}