#include<bits/stdc++.h>
using namespace std;
stack<int>deck;
int bottom;
int fn=0;
int n,m;
struct Node{
int role,hp,p[8],faction=0,w[5];
queue<int>card;
bool survive,ln;
}a[11];
int conversion(char ch){
if(ch=='P')
return 1;
else if(ch=='K')
return 2;
else if(ch=='D')
return 3;
else if(ch=='F')
return 4;
else if(ch=='N')
return 5;
else if(ch=='W')
return 6;
else if(ch=='J')
return 7;
else
return 8;
}
void End(){
if(fn==0){
puts("MP");
}
else{
puts("FP");
}
for(int i=1;i<=n;i++){
if(!a[i].survive){
puts("DEAD");
continue;
}
else{
while(!a[i].card.empty()){
if(a[i].card.front()==1){
printf("P ");
}
else if(a[i].card.front()==2){
printf("K ");
}
else if(a[i].card.front()==3){
printf("D ");
}
else if(a[i].card.front()==4){
printf("F ");
}
else if(a[i].card.front()==5){
printf("N ");
}
else if(a[i].card.front()==6){
printf("W ");
}
else if(a[i].card.front()==7){
printf("J ");
}
else{
printf("Z ");
}
a[i].card.pop();
}
puts("");
}
}
return;
}
bool pd(int p){
int j=p+1;
for(;j!=p;j++){
if(j>n){
j-=n;
if(j==p){
break;
}
}
if(!a[j].survive){
continue;
}
if(a[p].faction==2&&(a[j].role==1||a[j].role==2)){
if(a[j].p[7]){
if(a[j].role==2)
a[j].faction=3;
a[j].p[7]--;
a[j].w[5]++;
return !pd(j);
}
}
else if((a[p].faction==3||a[p].role==1)&&a[j].role==3){
if(a[j].p[7]){
a[j].faction=2;
a[j].p[7]--;
a[j].w[5]++;
return !pd(j);
}
}
}
return 0;
}
int number;
int main(){
scanf("%d%d",&n,&m);
int tmp=0;
number=n;
for(int i=1;i<=n;i++){
string s;
cin>>s;
a[i].survive=1;
if(s=="MP")
a[i].role=1;
else if(s=="ZP")
a[i].role=2;
else{
a[i].role=3;
fn++;
}
char ch;
for(int j=1;j<=4;j++){
cin>>ch;
a[i].faction=0;
++a[i].p[conversion(ch)];
a[i].card.push(conversion(ch));
if(conversion(ch)==8){
a[i].ln=1;
}
}
a[i].hp=4;
}
for(int i=1;i<=m;i++){
char ch;
cin>>ch;
deck.push(conversion(ch));
bottom=conversion(ch);
}
queue<int>w;
while(!deck.empty()){
w.push(deck.top());
deck.pop();
}
while(!w.empty()){
deck.push(w.front());
w.pop();
}
if(fn==0){
End();
return 0;
}
while(number>1){
++tmp;
if(tmp>n)
tmp-=n;
if(!a[tmp].survive)
continue;
if(!deck.empty()){
a[tmp].card.push(deck.top());
a[tmp].p[deck.top()]++;
if(deck.top()==8)
a[tmp].ln=1;
deck.pop();
}
else{
a[tmp].card.push(bottom);
a[tmp].p[bottom]++;
if(bottom==8)
a[tmp].ln=1;
}
if(!deck.empty()){
a[tmp].card.push(deck.top());
a[tmp].p[deck.top()]++;
if(deck.top()==8)
a[tmp].ln=1;
deck.pop();
}
else{
a[tmp].card.push(bottom);
a[tmp].p[bottom]++;
if(bottom==8)
a[tmp].ln=1;
}
while(!w.empty()){
a[tmp].card.push(w.front());
w.pop();
}
bool bj=0;
if(!a[tmp].survive)
continue;
queue<int>q;
while(!a[tmp].card.empty()){
if(a[tmp].card.front()==1){
if(a[tmp].w[1]>=1){
a[tmp].w[1]--;
a[tmp].card.pop();
continue;
}
else if(a[tmp].hp<4){
a[tmp].hp++;
a[tmp].card.pop();
continue;
}
q.push(a[tmp].card.front());
a[tmp].card.pop();
continue;
}
else if(a[tmp].card.front()==2){
if(a[tmp].w[2]>=1){
a[tmp].w[2]--;
a[tmp].card.pop();
continue;
}
if(bj==1&&!a[tmp].ln){
q.push(a[tmp].card.front());
a[tmp].card.pop();
continue;
}
int j=tmp+1;
for(;!a[j].survive;j++){if(j>n){j-=n;if(j==tmp) break;}if(a[j].survive==1)break;}
if(a[tmp].role==1&&(a[j].faction==1||a[j].faction==2)){
if(a[j].p[3]>=1){
a[j].p[3]--;
a[j].w[3]++;
a[tmp].card.pop();
bj=1;
continue;
}
else{
a[tmp].card.pop();
a[j].hp--;
bj=1;
if(a[j].hp==0){
if(a[j].p[1]>=1){
a[j].p[1]--;
a[j].w[1]++;
a[j].hp=1;
continue;
}
else{
a[j].survive=0;
number--;
if(a[j].role==2){
while(!a[tmp].card.empty())
a[tmp].card.pop();
while(!q.empty())
q.pop();
a[tmp].ln=0;
for(int i=1;i<=7;i++)
a[tmp].p[i]=0;
for(int i=1;i<=4;i++)
a[tmp].w[i]=0;
continue;
}
else if(a[j].role==3){
fn--;
if(fn==0){
while(!a[tmp].card.empty()){
q.push(a[tmp].card.front());
q.pop();
}
while(!q.empty()){
a[tmp].card.push(q.front());
q.pop();
}
End();
return 0;
}
for(int i=1;i<=3;i++){
if(!deck.empty()){
a[tmp].card.push(deck.top());
a[tmp].p[deck.top()]++;
if(deck.top()==8)
a[tmp].ln=1;
deck.pop();
}
else{
a[tmp].card.push(bottom);
a[tmp].p[bottom]++;
if(bottom==8)
a[tmp].ln=1;
}
}
number--;
continue;
}
}
}
}
}
else if(a[tmp].role==2&&(a[j].faction==1)){
bj=1;
a[tmp].faction=3;
if(a[j].p[3]>=1){
a[j].p[3]--;
a[j].w[3]++;
a[tmp].card.pop();
continue;
}
else{
number--;
a[j].hp--;
if(a[j].hp==0){
if(a[j].p[1]>=1){
a[j].p[1]--;
a[j].hp++;
a[j].w[1]++;
a[tmp].card.pop();
continue;
}
else{
a[j].survive=0;
a[tmp].card.pop();
fn--;
number--;
if(fn==0){
while(!a[tmp].card.empty()){
q.push(a[tmp].card.front());
q.pop();
}
while(!q.empty()){
a[tmp].card.push(q.front());
q.pop();
}
End();
return 0;
}
for(int i=1;i<=3;i++){
if(!deck.empty()){
a[tmp].card.push(deck.top());
a[tmp].p[deck.top()]++;
if(deck.top()==8)
a[tmp].ln=1;
deck.pop();
}
else{
a[tmp].card.push(bottom);
a[tmp].p[bottom]++;
if(bottom==8)
a[tmp].ln=1;
}
}
continue;
}
}
}
}
else if(a[tmp].role==3&&(a[j].role==1||a[j].faction==3)){
bj=1;
a[tmp].faction=2;
if(a[j].p[3]>=1){
a[j].p[3]--;
a[j].w[3]++;
a[tmp].card.pop();
continue;
}
else{
a[j].hp--;
if(a[j].hp==0){
if(a[j].p[1]>=1){
a[j].p[1]--;
a[j].w[1]++;
a[j].hp++;
a[tmp].card.pop();
continue;
}
else{
a[j].survive=0;
a[tmp].card.pop();
number--;
if(a[j].role==1){
while(!a[tmp].card.empty()){
q.push(a[tmp].card.front());
a[tmp].card.pop();
}
while(!q.empty()){
a[tmp].card.push(q.front());
q.pop();
}
End();
return 0;
}
continue;
}
}
}
}
q.push(a[tmp].card.front());
a[tmp].card.pop();
continue;
}
else if(a[tmp].card.front()==3){
if(a[tmp].w[3]>=1){
a[tmp].w[3]--;
a[tmp].card.pop();
continue;
}
else{
q.push(a[tmp].card.front());
a[tmp].card.pop();
continue;
}
}
else if(a[tmp].card.front()==4){
if(a[tmp].role==1){
int j=tmp+1;
for(;j!=tmp;j++){
if(j>n){
j-=n;
if(j==tmp)
break;
}
if(a[j].survive&&(a[j].faction==1||a[j].faction==2))
break;
}
if(j==tmp){
q.push(a[tmp].card.front());
a[tmp].card.pop();
continue;
}
a[tmp].card.pop();
if(a[j].role!=2)
if(pd(tmp)){
continue;
}
if(a[j].role==2){
a[j].hp--;
if(a[j].hp==0){
if(a[j].p[1]>=1){
a[j].p[1]--;
a[j].w[1]++;
a[j].hp++;
continue;
}
else{
a[j].survive=0;
number--;
while(!a[tmp].card.empty()){
a[tmp].card.pop();
}
while(!q.empty()){
q.pop();
}
for(int i=1;i<=7;i++){
a[tmp].p[i]=0;
}
for(int i=1;i<=4;i++){
a[tmp].w[i]=0;
}
a[tmp].ln=0;
continue;
}
}
continue;
}
if(a[tmp].p[2]>=a[j].p[2]){
--a[j].hp;
a[tmp].p[2]-=a[j].p[2];
a[tmp].w[2]+=a[j].p[2];
a[j].w[2]+=a[j].p[2];
a[j].p[2]=0;
if(a[j].hp==0){
if(a[j].p[1]>=1){
a[j].p[1]--;
a[j].w[1]++;
a[j].hp++;
continue;
}
else if(a[j].role==3){
fn--;
number--;
if(fn==0){
while(!a[tmp].card.empty()){
q.push(a[tmp].card.front());
a[tmp].card.pop();
}
while(!q.empty()){
a[tmp].card.push(q.front());
q.pop();
}
End();
return 0;
}
for(int i=1;i<=3;i++){
if(!deck.empty()){
a[tmp].card.push(deck.top());
a[tmp].p[deck.top()]++;
if(deck.top()==8)
a[tmp].ln=1;
deck.pop();
}
else{
a[tmp].card.push(bottom);
a[tmp].p[bottom]++;
if(bottom==8)
a[tmp].ln=1;
}
}
continue;
}
}
}
else{
--a[tmp].hp;
a[j].p[2]-=a[tmp].p[2];
a[j].p[2]--;
a[j].w[2]+=a[tmp].p[2];
a[j].w[2]++;
a[tmp].w[2]+=a[tmp].p[2];
a[tmp].p[2]=0;
if(a[tmp].hp==0){
if(a[tmp].p[1]>=1){
a[tmp].hp++;
a[tmp].p[1]--;
a[tmp].w[1]++;
continue;
}
else{
number--;
a[tmp].survive=0;
while(!a[tmp].card.empty()){
q.push(a[tmp].card.front());
a[tmp].card.pop();
}
while(!q.empty()){
a[tmp].card.push(q.front());
q.pop();
}
End();
return 0;
}
}
}
}
else if(a[tmp].role==2){
a[tmp].faction=3;
int j=tmp+1;
for(;j!=tmp;j++){
if(j>n){
j-=n;
if(j==tmp)
break;
}
if(!a[j].survive)
continue;
if(a[j].faction==2)
break;
}
if(j==tmp){
q.push(a[tmp].card.front());
a[tmp].card.pop();
continue;
}
a[tmp].card.pop();
if(pd(tmp))
continue;
if(a[tmp].p[2]>=a[j].p[2]){
a[tmp].p[2]-=a[j].p[2];
a[tmp].w[2]+=a[j].p[2];
a[j].w[2]+=a[j].p[2];
a[j].p[2]=0;
a[j].hp--;
if(a[j].hp==0){
if(a[j].p[1]>=1){
a[j].p[1]--;
a[j].w[1]++;
a[j].hp++;
continue;
}
else{
a[j].survive=0;
fn--;
number--;
if(fn==0){
while(!a[tmp].card.empty()){
q.push(a[tmp].card.front());
a[tmp].card.pop();
}
while(!q.empty()){
a[tmp].card.push(q.front());
q.pop();
}
End();
return 0;
}
for(int i=1;i<=3;i++){
if(!deck.empty()){
a[tmp].card.push(deck.top());
a[tmp].p[deck.top()]++;
if(deck.top()==8)
a[tmp].ln=1;
deck.pop();
}
else{
a[tmp].card.push(bottom);
a[tmp].p[bottom]++;
if(bottom==8)
a[tmp].ln=1;
}
}
continue;
}
}
}
else{
a[j].p[2]-=a[tmp].p[2];
a[j].p[2]--;
a[j].w[2]+=a[tmp].p[2];
a[j].w[2]++;
a[tmp].w[2]+=a[tmp].p[2];
a[tmp].p[2]=0;
a[tmp].hp--;
if(a[tmp].hp==0){
if(a[tmp].p[1]>=1){
a[tmp].p[1]--;
a[tmp].w[1]++;
a[tmp].hp++;
continue;
}
else{
number--;
a[tmp].survive=0;
continue;
}
}
}
}
else{
a[tmp].faction=2;
a[tmp].card.pop();
if(pd(tmp))
continue;
if(a[tmp].p[2]>=a[1].p[2]){
a[tmp].p[2]-=a[1].p[2];
a[tmp].w[2]+=a[1].p[2];
a[1].w[2]+=a[1].p[2];
a[1].p[2]=0;
a[1].hp--;
if(a[1].hp==0){
if(a[1].p[1]>=1){
a[1].p[1]--;
a[1].w[1]++;
a[1].hp++;
continue;
}
else{
a[1].survive=0;
while(!a[tmp].card.empty()){
q.push(a[tmp].card.front());
a[tmp].card.pop();
}
while(!q.empty()){
a[tmp].card.push(q.front());
q.pop();
}
End();
return 0;
}
}
}
else{
a[1].p[2]-=a[tmp].p[2];
a[1].p[2]--;
a[1].w[2]+=a[tmp].p[2];
a[1].w[2]++;
a[tmp].w[2]+=a[tmp].p[2];
a[tmp].p[2]=0;
a[tmp].hp--;
if(a[tmp].hp==0){
if(a[tmp].p[1]>=1){
a[tmp].p[1]--;
a[tmp].w[1]++;
a[tmp].hp++;
continue;
}
else{
a[tmp].survive=0;
fn--;
if(fn==0){
while(!a[tmp].card.empty()){
q.push(a[tmp].card.front());
a[tmp].card.pop();
}
while(!q.empty()){
a[tmp].card.push(q.front());
q.pop();
}
End;
return 0;
}
for(int i=1;i<=3;i++){
if(!deck.empty()){
a[tmp].card.push(deck.top());
a[tmp].p[deck.top()]++;
if(deck.top()==8)
a[tmp].ln=1;
deck.pop();
}
else{
a[tmp].card.push(bottom);
a[tmp].p[bottom]++;
if(bottom==8)
a[tmp].ln=1;
}
}
continue;
}
}
}
}
}
else if(a[tmp].card.front()==5){
int j=tmp+1;
a[tmp].card.pop();
for(;j!=tmp;j++){
if(j>n){
j-=n;
if(j==tmp){
continue;
}
}
if(a[j].survive==0){
continue;
}
if(pd(tmp)){
continue;
}
if(a[j].p[2]>=1){
a[j].p[2]--;
a[j].w[2]++;
continue;
}
else{
a[j].hp--;
if(a[j].role==1&&!a[tmp].faction){
a[tmp].faction=1;
}
if(a[j].hp==0){
if(a[j].p[1]>=1){
a[j].p[1]--;
a[j].w[1]++;
a[j].hp++;
continue;
}
else{
if(a[j].role==1){
a[j].survive=0;
number--;
while(!a[tmp].card.empty()){
q.push(a[tmp].card.front());
a[tmp].card.pop();
}
while(!q.empty()){
a[tmp].card.push(q.front());
q.pop();
}
End();
return 0;
}
if(a[j].role==3){
a[j].survive=0;
number--;
fn--;
if(fn==0){
while(!a[tmp].card.empty()){
q.push(a[tmp].card.front());
a[tmp].card.pop();
}
while(!q.empty()){
a[tmp].card.push(q.front());
q.pop();
}
End();
return 0;
}
for(int i=1;i<=3;i++){
if(!deck.empty()){
a[tmp].card.push(deck.top());
a[tmp].p[deck.top()]++;
if(deck.top()==8)
a[tmp].ln=1;
deck.pop();
}
else{
a[tmp].card.push(bottom);
a[tmp].p[bottom]++;
if(bottom==8)
a[tmp].ln=1;
}
}
continue;
}
if(a[j].role==2&&tmp==1){
a[j].survive=0;
number--;
while(!a[tmp].card.empty()){
a[tmp].card.pop();
}
while(!q.empty()){
q.pop();
}
for(int i=1;i<=7;i++){
a[tmp].p[i]=0;
}
for(int i=1;i<=4;i++){
a[tmp].w[i]=0;
}
continue;
}
number--;
continue;
}
}
}
}
}
else if(a[tmp].card.front()==6){
int j=tmp+1;
a[tmp].card.pop();
for(;j!=tmp;j++){
if(j>n){
j-=n;
if(j==tmp){
continue;
}
}
if(pd(tmp)){
continue;
}
if(a[j].p[3]>=1){
a[j].p[3]--;
a[j].w[3]++;
continue;
}
else{
a[j].hp--;
if(a[j].hp==0){
if(a[j].p[1]>=1){
a[j].p[1]--;
a[j].w[1]++;
a[j].hp++;
continue;
}
else{
if(a[j].role==1){
a[j].survive=0;
number--;
while(!a[tmp].card.empty()){
q.push(a[tmp].card.front());
a[tmp].card.pop();
}
while(!q.empty()){
a[tmp].card.push(q.front());
q.pop();
}
End();
return 0;
}
if(a[j].role==3){
a[j].survive=0;
number--;
fn--;
if(fn==0){
while(!a[tmp].card.empty()){
q.push(a[tmp].card.front());
a[tmp].card.pop();
}
while(!q.empty()){
a[tmp].card.push(q.front());
q.pop();
}
End();
return 0;
}
for(int i=1;i<=3;i++){
if(!deck.empty()){
a[tmp].card.push(deck.top());
a[tmp].p[deck.top()]++;
if(deck.top()==8)
a[tmp].ln=1;
deck.pop();
}
else{
a[tmp].card.push(bottom);
a[tmp].p[bottom]++;
if(bottom==8)
a[tmp].ln=1;
}
}
continue;
}
if(a[j].role==2&&tmp==1){
a[j].survive=0;
number--;
while(!a[tmp].card.empty()){
a[tmp].card.pop();
}
while(!q.empty()){
q.pop();
}
for(int i=1;i<=7;i++){
a[tmp].p[i]=0;
}
for(int i=1;i<=4;i++){
a[tmp].w[i]=0;
}
continue;
}
number--;
continue;
}
}
}
}
}
else if(a[tmp].card.front()==7){
if(a[tmp].w[4]){
a[tmp].w[4]--;
a[tmp].card.pop();
continue;
}
q.push(a[tmp].card.front());
a[tmp].card.pop();
continue;
}
else{
q.push(a[tmp].card.front());
a[tmp].card.pop();
continue;
}
}
while(!q.empty()){
a[tmp].card.push(q.front());
q.pop();
}
}
End();
return 0;
}