#include<bits/stdc++.h>
using namespace std;
string js[7]={"","I am guilty","I am not guilty","is guilty","is not guilty","Today is"};
string days[9]={"","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"},name[22];
string s[102];
int n,top=1,di,m,q,sz;
int r[22][22],xq[22][9];
int hh[22],zh[22],ans;
bool dz;
bool zc(string s,string z){
int l=s.length();
for(int i=0;i<l;i++){
if(s[i]==z[0]){
// printf("%c %d\n",s[i],i);
bool pd=1;
int lz=z.length();
++i;
for(int j=1;j<lz;j++,i++){
if(s[i]-z[j]){
pd=0;
break;
}
}
if(pd){
return 1;
}
}
}
return 0;
}
void sf(){
int zf,td;
for(int i=1;i<=n;i++){
if(!hh[i]){
zh[++di]=i;
}
}
for(int i=1;i<=n;i++){
bool pd=1;
for(int j=1;j<=m;j++){
if(i-hh[j]){
pd=0;
break;
}
}
if(pd){
for(int j=1;j<=n;j++){
if(r[j][i]==1){
if(!zf||zf==j){
zf=j;
}else{
return ;
}
for(int l=1;l<=m;l++){
if(r[hh[l]][j]==1){
return ;
}
}
for(int l=1;l<=di;l++){
if(r[zh[i]][j]==-1){
return ;
}
}
}
if(r[i][j]==-1){
for(int k=1;k<=di;k++){
if(r[zh[k]][i]==1){
return ;
}
}
for(int k=1;k<=m;k++){
if(r[hh[k]][i]==-1){
return ;
}
}
}
}
for(int j=1;j<=7;j++){
if(xq[j][i]==1){
if(!td||td==j){
td=j;
}else{
return ;
}
for(int l=1;l<=m;l++){
if(xq[hh[l]][j]==1){
return ;
}
}
for(int l=1;l<=di;l++){
if(xq[zh[i]][j]==-1){
return ;
}
}
}
if(xq[i][j]==-1){
for(int k=1;k<=di;k++){
if(xq[zh[k]][i]==1){
return ;
}
}
for(int k=1;k<=m;k++){
if(xq[zh[k]][i]==-1){
return ;
}
}
}
}
}else{
for(int j=1;j<=n;j++){
if(r[j][i]==-1){
if(!zf||zf==j){
zf=j;
}else{
return ;
}
for(int l=1;l<=di;l++){
if(r[zh[l]][j]==-1){
return ;
}
}
for(int l=1;l<=di;l++){
if(r[hh[i]][j]==1){
return ;
}
}
}
if(r[i][j]==1){
for(int k=1;k<=di;k++){
if(r[zh[k]][i]==1){
return ;
}
}
for(int k=1;k<=m;k++){
if(r[zh[k]][i]==-1){
return ;
}
}
}
}
for(int j=1;j<=7;j++){
if(xq[j][i]==-1){
if(!td||td==j){
td=j;
}else{
return ;
}
for(int l=1;l<=m;l++){
if(xq[zh[l]][j]==-1){
return ;
}
}
for(int l=1;l<=di;l++){
if(xq[hh[i]][j]==1){
return ;
}
}
}
if(xq[i][j]==1){
for(int k=1;k<=di;k++){
if(xq[zh[k]][i]==1){
return ;
}
}
for(int k=1;k<=m;k++){
if(xq[zh[k]][i]==-1){
return ;
}
}
}
}
}
}
if(!ans||ans==zf){
ans=zf;
}else{
dz=1;
}
for(int i=1;i<=m;i++){
printf("%d ",hh[i]);
}
puts("");
printf("%d %d\n",ans,dz);
return ;
}
void mj(int z,int k){
if(dz){
return ;
}
if(!(k-m-1)){
for(int i=1;i<=m;i++){
printf("%d ",hh[i]);
}
puts("");
sf();
}
for(int j=z+1;j<=n;j++){
hh[k]=j;
mj(j,k+1);
}
}
int main(){
// printf("%d\n",zc("10658758","658"));
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=n;i++){
cin>>name[i];
}
for(int i=1;i<=q;i++){
string yz;
cin>>yz;
for(int j=1;j<=n;j++){
if(zc(yz,name[j])){
sz=j;
break;
}
}
getline(cin,s[i]);
if(!s[i].length()){
q++;
continue;
}
if(zc(s[i],js[1])){
if(r[sz][sz]==-1){
hh[top++]=sz;
}
r[sz][sz]=1;
// printf("1:%d %d\n",sz,sz);
// cout<<s[i]<<'\n';
}else if(zc(s[i],js[2])){
if(r[sz][sz]==1){
hh[top++]=sz;
}
r[sz][sz]=-1;
// printf("-1:%d %d\n",sz,sz);
// cout<<s[i]<<'\n';
}else if(zc(s[i],js[3])){
for(int j=1;j<=n;j++){
if(zc(s[i],name[j])&&j-sz){
if(r[sz][j]==-1){
hh[top++]=sz;
}
r[sz][j]=1;
// printf("1:%d %d\n",j,sz);
break;
}
}
// cout<<s[i]<<'\n';
}else if(zc(s[i],js[4])){
for(int j=1;j<=n;j++){
if(zc(s[i],name[j])&&j-sz){
if(r[sz][j]==1){
hh[top++]=sz;
}
r[sz][j]=-1;
// printf("-1:%d %d\n",j,sz);
break;
}
}
// cout<<s[i]<<'\n';
}else{
for(int j=1;j<=7;j++){
if(zc(s[i],days[j])){
if(xq[sz][j]==-1){
hh[top++]=sz;
}
xq[sz][j]=1;
// printf("1:%d %d\n",j,sz);
}
}
// cout<<s[i]<<'\n';
}
}
for(int i=1;i<=n;i++){
int ansz=0;
for(int j=1;j<=n;j++){
if(r[i][j]>0){
++ansz;
}
}
if(ansz>=2){
hh[top++]=i;
}else{
ansz=0;
for(int j=1;j<=7;j++){
if(xq[i][j]>0){
++ansz;
}
}
if(ansz>=2){
hh[top++]=i;
}
}
}
mj(0,top);
if(dz){
return !puts("Cannot Determine");
}
if(!ans){
return !puts("Impossible");
}
cout<<name[ans];
return 0;
}
/*
1 0 0
1 0 0
0 0 1
0 0 0 0 0 0 1
0 0 0 0 0 0 0
0 0 0 0 0 0 0
*/
求调!钱周五给。