#include<bits/stdc++.h>
using namespace std;
struct pig{
int identity;
int health;
int first_kill;
int first_fight;
int num_of_kill;
int num_of_flash;
int num_of_peach;
int num_of_cards;
int num_of_J;
int alive_pig_before;
int alive_pig_next;
int situation;
bool is_it_alive;
bool is_it_zhugeliannu;
char hand_cards[2010];
}pigs[11];
int tot_cards,tot_pigs,tot_anti_pigs;
int now_top_of_cards,n=1;
char cards[2010];
int winner;
char pd_getcard(){
char c=cards[now_top_of_cards];
if(now_top_of_cards!=1){
now_top_of_cards--;
}
return c;
}
char getcard(){
char c=getchar();
for(;c<'A'||c>'Z';c=getchar());
return c;
}
void first_in(int rank){
char t[2];
cin>>t;
if(t[0]=='M'){
pigs[rank].identity=1;
pigs[rank].situation=1;
}else if(t[0]=='Z'){
pigs[rank].identity=2;
}else if(t[0]=='F'){
pigs[rank].identity=3;
pigs[rank].first_fight=1;
tot_anti_pigs++;
}
for(int i=1;i<=4;i++){
pigs[rank].hand_cards[i]=getcard();
if(pigs[rank].hand_cards[i]=='K'){
pigs[rank].num_of_kill++;
}else if(pigs[rank].hand_cards[i]=='D'){
pigs[rank].num_of_flash++;
}else if(pigs[rank].hand_cards[i]=='P'){
pigs[rank].num_of_peach++;
}else if(pigs[rank].hand_cards[i]=='J'){
pigs[rank].num_of_J++;
}
}
pigs[rank].num_of_cards=4;
pigs[rank].health=4;
pigs[rank].alive_pig_before=(rank=1?tot_pigs:rank-1);
pigs[rank].alive_pig_next=(rank==tot_pigs?1:rank+1);
pigs[rank].is_it_alive=1;
}
bool gameover(){
if(tot_anti_pigs==0){
winner=1;
return true;
}
if(!pigs[1].is_it_alive){
winner=2;
return true;
}
return false;
}
void print_ans(){
cout<<(winner==1?"MP":"FP")<<endl;
for(int i=1;i<=tot_pigs;i++){
if(!pigs[i].is_it_alive){
cout<<"DEAD"<<endl;
continue;
}else if(pigs[i].num_of_cards>0){
for(int j=1;j<pigs[i].num_of_cards;j++){
cout<<pigs[i].hand_cards[j]<<" ";
cout<<pigs[i].hand_cards[pigs[i].num_of_cards]<<endl;
}
}else{
cout<<endl;
}
}
}
void die(int rank){
pigs[rank].is_it_alive=0;
if(rank){
winner=2;
print_ans();
exit(0);
}
if(pigs[rank].identity==3){
if(tot_anti_pigs==0){
winner=1;
print_ans();
exit(0);
pigs[pigs[rank].alive_pig_before].alive_pig_next=pigs[rank].alive_pig_next;
pigs[pigs[rank].alive_pig_next].alive_pig_before=pigs[rank].alive_pig_before;
}
}
}
void find_target_to_kill(int rank){
if(pigs[rank].identity==2){
pigs[rank].first_kill=(pigs[pigs[rank].alive_pig_next].situation==2?pigs[rank].alive_pig_next:0);
}else if(pigs[rank].identity==1){
pigs[rank].first_kill=(pigs[pigs[rank].alive_pig_next].situation==2||pigs[pigs[rank].alive_pig_next].situation==3?pigs[rank].alive_pig_next:0);
}else if(pigs[rank].identity==3){
pigs[rank].first_kill=(pigs[pigs[rank].alive_pig_next].situation==1?pigs[rank].alive_pig_next:0);
}
}
void find_target_to_fight(int rank){
for(int i=pigs[rank].alive_pig_next;i!=rank;i=pigs[i].alive_pig_next){
if((rank==1&&(pigs[i].situation==2||pigs[i].situation==3))||(pigs[i].situation==2&&pigs[rank].identity==2)){
pigs[rank].first_fight=i;
return ;
}
}
pigs[rank].first_fight=0;
}
void near_die(int killer,int sufferer){
bool num_of_have_peach=0;
if(pigs[sufferer].num_of_peach>0){
int i;
num_of_have_peach=1;
for(i=1;pigs[sufferer].hand_cards[i]!='P';i++);
for(i=i+1;i<=pigs[sufferer].num_of_cards;i++){
pigs[sufferer].hand_cards[i-1]=pigs[sufferer].hand_cards[i];
pigs[sufferer].num_of_peach--;
pigs[sufferer].num_of_cards--;
pigs[sufferer].health++;
}
}
if(!num_of_have_peach){
die(sufferer);
if(killer==1&&pigs[sufferer].identity==2){
pigs[1].is_it_zhugeliannu=pigs[1].num_of_cards=pigs[1].num_of_kill=pigs[1].num_of_peach=pigs[1].num_of_flash=pigs[1].num_of_J=0;
memset(pigs[1].hand_cards,0,sizeof(pigs[1].hand_cards));
}
if(pigs[sufferer].identity==3){
for(int j=1;j<=3;j++){
pigs[killer].hand_cards[(pigs[killer++]).num_of_cards]=pd_getcard();
if(pigs[killer].hand_cards[pigs[killer].num_of_cards]=='K'){
pigs[killer].num_of_kill++;
}else if(pigs[killer].hand_cards[pigs[killer].num_of_cards]=='D'){
pigs[killer].num_of_flash++;
}else if(pigs[killer].hand_cards[pigs[killer].num_of_cards]=='P'){
pigs[killer].num_of_peach++;
}else if(pigs[killer].hand_cards[pigs[killer].num_of_cards]=='J'){
pigs[killer].num_of_J++;
}
}
}
}
}
bool ask_for_J(int rank,int situation){
if((situation==0)||situation==3){
return 0;
}
for(int i=rank;;i=pigs[i].alive_pig_next){
if(pigs[i].num_of_J>0){
if(situation==1&&(pigs[i].identity==1||pigs[i].identity==2)){
int j;
for(j=1;j<=pigs[i].num_of_cards&&pigs[i].hand_cards[j]!='J';i++);
for(j=j+1;j<=pigs[i].hand_cards[i];j++){
pigs[i].hand_cards[j-1]=pigs[i].hand_cards[j];
}
pigs[i].num_of_cards--;
pigs[i].num_of_J--;
if(pigs[i].situation==0||pigs[i].situation==3){
pigs[i].situation=1;
return !ask_for_J(i,2);
}
}else if(situation==2&&pigs[i].identity==3){
int j;
for(j=1;j<=pigs[i].num_of_cards&&pigs[i].hand_cards[j]!='J';j++);
for(j=j+1;j<=pigs[i].num_of_cards;j++){
pigs[i].hand_cards[j-1]=pigs[i].hand_cards[j];
}
pigs[i].num_of_cards--;
pigs[i].num_of_J--;
if(pigs[i].situation==0||pigs[i].situation==3){
pigs[i].situation=2;
}
return !ask_for_J(i,1);
}
}
if(i==pigs[rank].alive_pig_before){
return 0;
}
}
}
void go_fight(int from,int target){
int i,f,g;
if(pigs[from].situation==0||pigs[from].situation==3){
pigs[from].situation=(pigs[target].situation==1?2:1);
}
bool cmiss=ask_for_J(from,pigs[target].situation);
if(cmiss){
return ;
}
if(pigs[target].identity==2&&from==1){
if((pigs[target].health--)<=0){
near_die(from,target);
}
return ;
}
i=target;
while(pigs[i].num_of_kill>0){
for(f=1;f<=pigs[i].num_of_cards&&pigs[i].hand_cards[f]!='K';f++);
for(int k=f+1;k<=pigs[i].num_of_cards;k++){
pigs[i].hand_cards[k-1]=pigs[i].hand_cards[k];
pigs[i].num_of_cards--;
pigs[i].num_of_kill--;
i=(i==target?from:target);
}
}
int failer=i;
winner=(from==failer?target:from);
if((pigs[failer].health--)<=0){
near_die(winner,failer);
}
}
void go_nanban_invasion(int from){
for(int i=pigs[from].alive_pig_next;i!=from;i=pigs[i].alive_pig_next){
bool cmiss=ask_for_J(from,pigs[i].situation);
if(cmiss){
continue;
}
if(pigs[i].num_of_kill>0){
int j;
for(j=1;pigs[i].hand_cards[j]!='K';j++);
for(j=j+1;j<=pigs[i].num_of_cards;j++){
pigs[i].hand_cards[j-1]=pigs[i].hand_cards[j];
}
pigs[i].num_of_cards--;
pigs[i].num_of_kill--;
cmiss=1;
}
if(cmiss){
continue;
}
if(i==1&&pigs[from].situation==0){
pigs[from].situation==3;
}
if((pigs[i].health--)<=0){
near_die(from,i);
}
}
}
void go_ten_thousand_arrows_are_fired(int from){
for(int i=pigs[from].alive_pig_next;i!=from;i=pigs[i].alive_pig_next){
bool cmiss=ask_for_J(from,pigs[i].situation);
if(cmiss){
continue;
}
if(pigs[i].num_of_flash>0){
int j;
for(j=1;pigs[i].hand_cards[j]!='D';j++);
for(j=j+1;j<=pigs[i].num_of_cards;j++){
pigs[i].hand_cards[j-1]=pigs[i].hand_cards[j];
}
pigs[i].num_of_cards--;
pigs[i].num_of_flash--;
cmiss=1;
}
if(cmiss){
continue;
}
if(i==1&&pigs[from].situation==0){
pigs[from].situation=3;
if((pigs[i].health--)<=0){
near_die(from,i);
}
}
}
}
void go_kill(int from,int target){
int i;
if(pigs[from].situation==0||pigs[from].situation==3){
pigs[from].situation=(pigs[target].situation==1?2:1);
}
if(pigs[target].num_of_flash>0){
for(i=1;pigs[target].hand_cards[i]!='D';i++);
for(i=i+1;i<=pigs[target].num_of_cards;i++){
pigs[target].hand_cards[i-1]=pigs[target].hand_cards[i];
pigs[target].num_of_flash--;
pigs[target].num_of_cards--;
}
}else if((pigs[target].health--)<=0){
near_die(from,target);
}
}
void round(int rank){
for(int i=1;i<=2;i++){
pigs[rank].hand_cards[(pigs[rank].num_of_cards)++]=pd_getcard();
if(pigs[rank].hand_cards[pigs[rank].num_of_cards]=='K'){
pigs[rank].num_of_kill++;
}else if(pigs[rank].hand_cards[pigs[rank].num_of_cards]=='D'){
pigs[rank].num_of_flash++;
}else if(pigs[rank].hand_cards[pigs[rank].num_of_cards]=='P'){
pigs[rank].num_of_peach++;
}else if(pigs[rank].hand_cards[pigs[rank].num_of_cards]=='J'){
pigs[rank].num_of_J++;
}
}
int sum_of_kill=0;
for(int i=1;i<=pigs[rank].num_of_cards&&pigs[rank].num_of_cards>0;i++){
if(pigs[rank].hand_cards[i]=='Z'){
for(int j=i+1;j<=pigs[rank].num_of_cards;j++){
pigs[rank].hand_cards[j-1]=pigs[rank].hand_cards[j];
}
pigs[rank].num_of_cards--;
pigs[rank].is_it_zhugeliannu=1;
i=0;
}
if(pigs[rank].hand_cards[i]=='F'){
if(pigs[rank].identity!=3){
find_target_to_fight(rank);
}
if(pigs[rank].first_fight!=0){
for(int j=i+1;j<=pigs[rank].num_of_cards;j++){
pigs[rank].hand_cards[j-1]=pigs[rank].hand_cards[j];
}
pigs[rank].num_of_cards--;
go_fight(rank,pigs[rank].first_fight);
i=0;
if(!pigs[rank].is_it_alive){
return ;
}
}
}
if(pigs[rank].hand_cards[i]=='K'&&(sum_of_kill==0||pigs[rank].is_it_zhugeliannu==1)){
find_target_to_kill(rank);
if(pigs[rank].first_kill!=0){
for(int j=i+1;j<=pigs[rank].num_of_cards;j++){
pigs[rank].hand_cards[j-1]=pigs[rank].hand_cards[j];
}
pigs[rank].num_of_cards--;
pigs[rank].num_of_kill--;
go_kill(rank,pigs[rank].first_kill);
sum_of_kill++;
i=0;
}
}
if(pigs[rank].hand_cards[i]=='P'&&pigs[rank].health<4){
for(int j=i+1;j<=pigs[rank].num_of_cards;j++){
pigs[rank].hand_cards[j-1]=pigs[rank].hand_cards[j];
}
pigs[rank].num_of_cards--;
pigs[rank].num_of_peach--;
pigs[rank].health++;
i--;
}
if(pigs[rank].hand_cards[i]=='N'){
for(int j=i+1;j<=pigs[rank].num_of_cards;j++){
pigs[rank].hand_cards[j-1]=pigs[rank].hand_cards[j];
}
pigs[rank].num_of_cards--;
go_nanban_invasion(rank);
i=0;
}
if(pigs[rank].hand_cards[i]=='W'){
for(int j=i+1;j<=pigs[rank].num_of_cards;j++){
pigs[rank].hand_cards[j-1]=pigs[rank].hand_cards[j];
}
pigs[rank].num_of_cards--;
go_ten_thousand_arrows_are_fired(rank);
i=0;
}
}
}
void launch_kill(int from,int target){
int i;
if(pigs[from].situation==0||pigs[from].situation==3){
pigs[from].situation=(pigs[target].situation==1?2:1);
}
if(pigs[target].num_of_flash>0){
for(i=1;pigs[target].hand_cards[i]!='D';i++);
for(i=i+1;i<=pigs[target].num_of_cards;i++){
pigs[target].hand_cards[i-1]=pigs[target].hand_cards[i];
}
pigs[target].num_of_flash--;
pigs[target].num_of_cards--;
}else if((pigs[target].health--)<=0){
near_die(from,target);
}
}
int main(){
cin>>tot_pigs>>tot_cards;
now_top_of_cards=tot_cards;
for(int i=1;i<=tot_pigs;i++){
pigs[i].num_of_kill=pigs[i].num_of_peach=pigs[i].num_of_flash=pigs[i].num_of_J=0;
}
for(int i=1;i<=tot_pigs;i++){
first_in(i);
}
for(int i=tot_cards;i>=1;i--){
cards[i]=getcard();
while(gameover()==0){
round(n);
n=pigs[n].alive_pig_next;
}
print_ans();
}
return 0;
}