#include<bits/stdc++.h>
using namespace std;
int n,m,k,player,cnt;
int player_card[31][19];
string s;
string name[31],card[300005];
string f_key[19]={"","A1","A2","A5","A9","A19","A49",
"A99","B1","B9","B19","C2","D2","E0",
"E49","E99","PASS","TURN","DOUBLE"};
map<string,int> key;
int f(int x,int p)
{
if(x<=2)
return p+x;
if(x==3)
return p+5;
if(x==4)
return p+9;
if(x==5)
return p+19;
if(x==6)
return p+49;
if(x==7)
return p+99;
if(x==8)
return p-1;
if(x==9)
return p-9;
if(x==10)
return p-19;
if(x==11)
return p*2;
if(x==12)
return floor(p*1.0/2);
if(x==13)
return 0;
if(x==14)
return 49;
return 99;
}
int fail(int x)
{
cout<<name[x]<<" lost the game."<<endl;
for(int j=1;j<=18;j++)
player_card[x][j]--;
for(int j=1;j<=3;j++)
player_card[x][key[card[++cnt]]]++;
}
int priority(int x,bool doubled)
{
if(x<=7)
{
if(doubled)
return 3;
return 2;
}
if(x<=10)
{
if(doubled)
return 2;
return 3;
}
if(x==11)
{
if(doubled)
return 4;
return 1;
}
if(x==12)
{
if(doubled)
return 1;
return 4;
}
return 5;
}
void put(int x,int y,int p)
{
cout<<name[x]<<" used "<<f_key[y]<<",now p="<<p<<"."<<endl;
}
int main()
{
player=1;cnt=0;
memset(player_card,0,sizeof(player_card));
key["A1"]=1;key["A2"]=2;key["A5"]=3;key["A9"]=4;
key["A19"]=5;key["A49"]=6;key["A99"]=7;
key["B1"]=8;key["B9"]=9;key["B19"]=10;
key["C2"]=11;key["D2"]=12;
key["E0"]=13;key["E49"]=14;key["E99"]=15;
key["PASS"]=16;key["TURN"]=17;key["DOUBLE"]=18;
cin>>n>>m>>k;
for(int i=1;i<=n;i++)
{
cin>>s;
name[i]=s;
for(int j=1;j<=3;j++)
{
cin>>s;
player_card[i][key[s]]++;
}
}
for(int i=1;i<=k;i++)
{
cin>>s;
card[++cnt]=s;
}
cnt=0;
for(int i=1;i<=m;i++)
{
int p=0;
bool turn=false,doubled=false;
cout<<"Round "<<i<<":"<<endl;
while(p<=99)
{
if(player==0)
player+=n;
if(doubled)
{
if(player_card[player][16])
{
player_card[player][16]--;
put(player,16,p);
if(turn)
player--;
else
player++;
continue;
}
else if(player_card[player][17])
{
player_card[player][17]--;
turn=1-turn;
put(player,17,p);
if(turn)
player--;
else
player++;
continue;
}
else if(player_card[player][18])
{
player_card[player][18]--;
put(player,18,p);
if(turn)
player--;
else
player++;
continue;
}
else
{
int minp=1000001,minc=-1;
for(int j=1;j<=15;j++)
{
if(player_card[player][j])
{
int res=f(j,p);
if((res<minp||res==minp&&priority(j,true)>priority(minc,true))&&res<=99)
{
minp=res;
minc=j;
}
}
}
p=minp;
if(p>99)
{
fail(player);
break;
}
put(player,minc,p);
player_card[player][minc]--;
}
doubled=1-doubled;
player_card[player][key[card[++cnt]]]++;
}
int maxp=-1000001,maxc=-1;
for(int j=1;j<=15;j++)
{
if(player_card[player][j])
{
int res=f(j,p);
if((res>maxp||res==maxp&&priority(j,false)>priority(maxc,false))&&res<=99)
{
maxp=res;
maxc=j;
}
}
}
if(maxc==-1||maxp>99)
{
if(player_card[player][16])
{
player_card[player][16]--;
put(player,16,p);
}
else if(player_card[player][17])
{
player_card[player][17]--;
turn=1-turn;
put(player,17,p);
}
else if(player_card[player][18])
{
player_card[player][18]--;
put(player,18,p);
doubled=true;
}
else
{
fail(player);
break;
}
}
else
{
p=maxp;
put(player,maxc,p);
player_card[player][maxc]--;
}
player_card[player][key[card[++cnt]]]++;
if(turn)
player--;
else
player++;
}
}
return 0;
}