#include<bits/stdc++.h>
using namespace std;
#define y 11
#define hh 3000
long long n,mm;
long long now,APs;
char zgs[hh];
bool js;
long long read(){
long long x=0,sg=1;char cha=getchar();
while(cha<'0'||cha>'9'){if(cha=='-')sg=-1;cha=getchar();}
while(cha>='0'&&cha<='9'){x=x*10+cha-'0';cha=getchar();}
return x*sg;
}
struct cst_zhu{
long long sf;
long long hp;
long long p;
char ca[hh];
long long q;
long long h;
long long blsf;
bool lap;
bool zb;
}pigg[y];
void cst_dy(long long kk){
bool to=true;
for(int i=1;i<=pigg[kk].p;i++){
if(pigg[kk].ca[i]=='X') continue;
if(!to) cout<<" ";
else to=false;
printf("%c",pigg[kk].ca[i]);
}
cout<<endl;
}
void cst_mo(long long kk){
if(now>mm) now=mm;
pigg[kk].p++;
pigg[kk].ca[pigg[kk].p]=zgs[now];
now++;
}
long long cst_zhao(long long kk,char ch){
for(int i=1;i<=pigg[kk].p;i++)
if(pigg[kk].ca[i]==ch){
pigg[kk].ca[i]='X';
return true;
}
return false;
}
void cst_gs3(long long kk,long long ll){
if(pigg[ll].blsf==0) return;
if(pigg[ll].blsf!=3){
pigg[kk].lap=false;
pigg[kk].blsf=1;
}
if(pigg[ll].blsf==3){
pigg[kk].lap=true;
pigg[kk].blsf=3;
}
}
void cst_gs4(long long kk,long long ll){
if(pigg[ll].blsf==0) return;
if(pigg[ll].blsf!=3){
pigg[kk].blsf=3;
pigg[kk].lap=true;
}
if(pigg[ll].blsf==3){
pigg[kk].blsf=1;
pigg[kk].lap=false;
}
}
void cst_sh(long long kk,long long ll){
pigg[ll].hp--;
while(pigg[ll].hp<=0&&cst_zhao(ll,'P')) pigg[ll].hp++;
if(pigg[ll].hp<=0){
pigg[ll].p=0;
pigg[ll].zb=false;
if(pigg[ll].sf==1){
js=true;
return;
}
else if(pigg[ll].sf==2){
if(pigg[kk].sf==1){
pigg[kk].p=0;
pigg[kk].zb=false;
}
}
else if(pigg[ll].sf==3){
APs--;
if(APs==0){
js=true;
return;
}
cst_mo(kk);
cst_mo(kk);
cst_mo(kk);
}
pigg[pigg[ll].q].h=pigg[ll].h;
pigg[pigg[ll].h].q=pigg[ll].q;
}
}
bool cst_gs1(long long kk,long long ll){
if(pigg[kk].sf==1&&pigg[ll].lap==true) return true;
if(pigg[ll].blsf==0) return false;
if(pigg[kk].sf!=3&&pigg[ll].blsf==3) return true;
if(pigg[kk].sf==3&&pigg[ll].blsf!=3) return true;
return false;
}
bool cst_gs2(long long kk,long long ll){
if(pigg[ll].blsf==0) return false;
if(pigg[kk].sf!=3&&pigg[ll].blsf!=3) return true;
if(pigg[kk].sf==3&&pigg[ll].blsf==3) return true;
return false;
}
bool cst_j(long long kk,long long ll,long long la){
long long to=kk;
while(1){
if((la==0&&cst_gs2(to,ll))||(la!=0&&cst_gs1(to,la))){
if(cst_zhao(ll,'J')){
if(la==0&&cst_gs2(to,ll)) cst_gs3(to,ll);
if(la!=0&&cst_gs1(to,la)) cst_gs4(to,la);
if(!cst_j(pigg[to].h,ll,to))
return true;
}
}
to=pigg[to].h;
if(to==kk) return false;
}
}
void cst_k(long long kk,long long ll){
cst_gs4(kk,ll);
bool pp=cst_zhao(ll,'D');
if(pp==false)
cst_sh(kk,ll);
}
void cst_f(long long kk,long long ll){
if(pigg[kk].sf==1&&pigg[ll].sf==2){
cst_sh(kk,ll);return;
}
while(1){
bool to1=cst_zhao(ll,'K');
if(!to1){
cst_sh(kk,ll);return;
}
bool to2=cst_zhao(ll,'K');
if(!to2){
cst_sh(ll,kk);return;
}
}
}
void cst_n(long long kk,long long ll){
while(1){
if(js) return;
if(!cst_j(kk,ll,0)){
bool to=cst_zhao(ll,'K');
if(!to){
if(pigg[ll].sf==1&&pigg[kk].blsf==0){
pigg[kk].lap=true;
}
cst_sh(kk,ll);
}
}
ll=pigg[ll].h;
if(ll==kk) return;
}
}
void cst_w(long long kk,long long ll){
while(1){
if(js) return;
if(!cst_j(kk,ll,0)){
bool to=cst_zhao(ll,'D');
if(!to){
if(pigg[ll].sf==1&&pigg[kk].blsf==0)
pigg[kk].lap=true;
cst_sh(kk,ll);
}
}
ll=pigg[ll].h;
if(ll==kk) return;
}
}
void cst_yx(){
while(true){
for(int i=1;i<=n;i++){
if(js) return;
if(pigg[i].hp<=0) continue;
cst_mo(i);
cst_mo(i);
bool yk=true;
for(int k=1;k<=pigg[i].p;k++){
if(pigg[i].ca[k]=='X') continue;
if(js) return;
switch(pigg[i].ca[k]){
case 'P':{
if(pigg[i].hp<4){
pigg[i].ca[k]='X';
pigg[i].hp++;
}
break;
}
case 'K':{
if(yk&&cst_gs1(i,pigg[i].h)){
pigg[i].ca[k]='X';
cst_k(i,pigg[i].h);
if(!pigg[i].zb)
yk=false;
k=0;
}
break;
}
case 'F':{
if(pigg[i].sf==3){
pigg[i].ca[k]='X';
cst_gs4(i,1);
if(cst_j(i,1,0)) break;
cst_f(i,1);
k=0;
}else{
long long to=pigg[i].h;
while(true){
if(cst_gs1(i,to)){
pigg[i].ca[k]='X';
cst_gs4(i,to);
if(cst_j(i,to,0)) break;
cst_f(i,to);
k=0;
break;
}
to=pigg[to].h;
if(to==i) break;
}
}
break;
}
case 'N':{
pigg[i].ca[k]='X';
cst_n(i,pigg[i].h);
k=0;
break;
}
case 'W':{
pigg[i].ca[k]='X';
cst_w(i,pigg[i].h);
k=0;
break;
}
case 'Z':{
pigg[i].ca[k]='X';
pigg[i].lap=true;
yk=true;
k=0;
break;
}
}
while(pigg[i].ca[pigg[i].p]=='X') pigg[i].p--;
}
}
}
}
int main(){
n=read();
mm=read();
for(int i=1;i<y;i++){
for(int k=1;k<hh;k++)
pigg[i].ca[k]='X';
pigg[i].hp=4;
}
for(int i=1;i<=n;++i){
char ppp[10],e[10];
scanf("%s",ppp);
for(int k=1;k<=4;k++){
scanf("%s",e);
pigg[i].ca[k]=e[0];
}
pigg[i].p=4;
if(ppp[0]=='M'){
pigg[i].sf=1;
pigg[i].blsf=1;
}
else if(ppp[0]=='Z') pigg[i].sf=2;
else{
pigg[i].sf=3;APs++;
}
pigg[i].h=i+1;
pigg[i].q=i-1;
}
pigg[n].h=1;
pigg[1].q=n;
for(int i=1;i<=mm;i++){
char f[10];
scanf("%s",f);
zgs[i]=f[0];
}
now=1;
cst_yx();
if(pigg[1].hp<=0) printf("FP\n");
else printf("MP\n");
for(int i=1;i<=n;i++){
if(pigg[i].hp<=0) printf("DEAD\n");
else
cst_dy(i);
}
return 0;
}