#include <bits/stdc++.h>
using namespace std;
struct player
{
string actor;
char armor;
int hp, sha, shan, tao, nanman, wanjian, zhuge, wuxie, juedou;
string record;
string known[100];
bool alive;
}p[100];
int n, card, fnum, now, cnow = 1;
char a[100];
void solve(char c, int i)
{
if(c == 'K')p[i].sha++;
else if(c == 'D')p[i].shan++;
else if(c == 'P')p[i].tao++;
else if(c == 'N')p[i].nanman++;
else if(c == 'W')p[i].wanjian++;
else if(c == 'J')p[i].wuxie++;
else if(c == 'Z')p[i].zhuge++;
else if(c == 'F')p[i].juedou++;
p[i].record += c;
}
void zero(int i)
{
p[i].armor = '#';
p[i].sha = 0;
p[i].shan = 0;
p[i].tao = 0;
p[i].nanman = 0;
p[i].wanjian = 0;
p[i].zhuge = 0;
p[i].wuxie = 0;
p[i].juedou = 0;
}
void willdie(int i)
{
for(int j = 1; j <= n; j++)
{
if(i == j && p[i].tao != 0)
{
p[i].tao--;
p[i].hp++;
}
else if(p[i].actor == "MP" && p[j].actor == "ZP")
{
p[j].tao--;
p[i].hp++;
for(int k = 1; k <= n; k++)
{
p[k].known[now] = "ZP";
}
}
else if(p[j].known[i] == "FP" && p[j].actor == "FP")
{
p[j].tao--;
p[i].hp++;
for(int k = 1; k <= n; k++)
{
p[k].known[j] = "FP";
}
}
}
if(p[i].hp == 0)
{
p[i].alive = 0;
if(p[i].actor == "ZP")zero(now);
else
{
solve(a[cnow], now);
if(cnow != n)cnow++;
solve(a[cnow], now);
if(cnow != n)cnow++;
solve(a[cnow], now);
if(cnow != n)cnow++;
}
}
}
int main()
{
cin >> n >> card;
now = 1;
for(int i = 1; i <= n; i++)
{
cin >> p[i].actor;
if(p[i].actor == "FP")fnum++;
for(int j = 1; j <= 4; j++)
{
char c;
cin >> c;
solve(c, i);
p[i].record += c;
}
p[i].alive = 1;
p[i].hp = 4;
p[i].armor = '#';
}
for(int i = 1; i <= card; i++)
{
char cc;
cin >> cc;
a[i] = cc;
}
for(int i = 1; i <= n; i++)p[i].known[1] = "MP";
while(fnum != 0 && p[1].alive)
{
if(p[now].alive == 0)
{
if(now == n)now = 1;
else now++;
continue;
}
solve(a[cnow], now);
if(cnow != n)cnow++;
solve(a[cnow], now);
if(cnow != n)cnow++;
int prev, next;
if(now == 1)prev = n;
else prev = now - 1;
while(p[prev].alive == 0)
{
if(now == 1)prev = n;
else prev = now - 1;
}
if(now == n)next = 1;
else next = now + 1;
while(p[next].alive == 0)
{
if(now == n)next = 1;
else next = now + 1;
}
if(p[now].zhuge != 0)
{
while(p[now].zhuge != 0)
{
p[now].armor = 'Z';
p[now].zhuge--;
}
}
while(p[now].hp < 4 && p[now].tao != 0)
{
p[now].hp++;
p[now].tao--;
}
if(p[now].actor == "MP")
{
if(p[now].nanman != 0)
{
p[now].nanman--;
while(p[now].nanman != 0)
{
for(int i = 1; i < now; i++)
{
if(p[i].alive == 0)continue;
bool need = 1;
for(int j = 1; j <= n; j++)
{
if(p[j].alive == 1)
{
if(p[j].known[i] == "FP" && p[j].actor == "FP")
{
p[j].wuxie--;
need = 0;
for(int k = 1; k <= n; i++)p[k].known[j] == "FP";
}
}
}
if(need)
{
if(p[i].sha != 0)p[i].sha--;
else p[i].hp--;
if(p[i].hp == 0)
{
willdie(i);
}
}
}
for(int i = now + 1; i <= n; i++)
{
if(p[i].alive == 0)continue;
bool need = 1;
for(int j = 1; j <= n; j++)
{
if(p[j].alive == 1)
{
if(p[j].known[i] == "FP" && p[j].actor == "FP")
{
p[j].wuxie--;
need = 0;
for(int k = 1; k <= n; i++)p[k].known[j] == "FP";
}
}
}
if(need)
{
if(p[i].sha != 0)p[i].sha--;
else p[i].hp--;
if(p[i].hp == 0)
{
willdie(i);
}
}
}
}
while(p[now].wanjian != 0)
{
p[now].wanjian--;
for(int i = 1; i < now; i++)
{
if(p[i].alive == 0)continue;
bool need = 1;
for(int j = 1; j <= n; j++)
{
if(p[j].alive == 1)
{
if(p[j].known[i] == "FP" && p[j].actor == "FP")
{
p[j].wuxie--;
need = 0;
for(int k = 1; k <= n; i++)p[k].known[j] == "FP";
}
}
}
if(need)
{
if(p[i].shan != 0)p[i].shan--;
else p[i].hp--;
if(p[i].hp == 0)
{
willdie(i);
}
}
}
for(int i = now + 1; i <= n; i++)
{
if(p[i].alive == 0)continue;
bool need = 1;
for(int j = 1; j <= n; j++)
{
if(p[j].alive == 1)
{
if(p[j].known[i] == "FP" && p[j].actor == "FP")
{
p[j].wuxie--;
need = 0;
for(int k = 1; k <= n; i++)p[k].known[j] == "FP";
}
}
}
if(need)
{
if(p[i].shan != 0)p[i].shan--;
else p[i].hp--;
if(p[i].hp == 0)
{
willdie(i);
}
}
}
}
}
int limit = 1;
if(p[now].armor == 'Z')limit = 999999;
if(p[now].known[next] == "FP")
{
while(limit && p[now].sha)
{
p[now].sha--;
limit--;
if(p[next].shan != 0)p[next].shan--;
else p[next].hp--;
if(p[next].hp == 0)willdie(next);
}
}
if(p[now].known[prev] == "FP")
{
while(limit && p[now].sha)
{
p[now].sha--;
limit--;
if(p[prev].shan != 0)p[prev].shan--;
else p[prev].hp--;
if(p[prev].hp == 0)willdie(prev);
}
}
}
if(p[now].actor == "ZP")
{
if(p[now].nanman != 0)
{
p[now].nanman--;
while(p[now].nanman != 0)
{
for(int i = 1; i < now; i++)
{
if(p[i].alive == 0)continue;
bool need = 1;
for(int j = 1; j <= n; j++)
{
if(p[j].alive == 1)
{
if(p[j].known[i] == "FP" && p[j].actor == "FP")
{
p[j].wuxie--;
need = 0;
for(int k = 1; k <= n; i++)p[k].known[j] == "FP";
}
}
}
if(need)
{
if(p[i].sha != 0)p[i].sha--;
else p[i].hp--;
if(p[i].hp == 0)
{
willdie(i);
}
}
}
for(int i = now + 1; i <= n; i++)
{
if(p[i].alive == 0)continue;
bool need = 1;
for(int j = 1; j <= n; j++)
{
if(p[j].alive == 1)
{
if(p[j].known[i] == "FP" && p[j].actor == "FP")
{
p[j].wuxie--;
need = 0;
for(int k = 1; k <= n; i++)p[k].known[j] == "FP";
}
}
}
if(need)
{
if(p[i].sha != 0)p[i].sha--;
else p[i].hp--;
if(p[i].hp == 0)
{
willdie(i);
}
}
}
}
while(p[now].wanjian != 0)
{
p[now].wanjian--;
for(int i = 1; i < now; i++)
{
if(p[i].alive == 0)continue;
bool need = 1;
for(int j = 1; j <= n; j++)
{
if(p[j].alive == 1)
{
if(p[j].known[i] == "FP" && p[j].actor == "FP")
{
p[j].wuxie--;
need = 0;
for(int k = 1; k <= n; i++)p[k].known[j] == "FP";
}
}
}
if(need)
{
if(p[i].shan != 0)p[i].shan--;
else p[i].hp--;
if(p[i].hp == 0)
{
willdie(i);
}
}
}
for(int i = now + 1; i <= n; i++)
{
if(p[i].alive == 0)continue;
bool need = 1;
for(int j = 1; j <= n; j++)
{
if(p[j].alive == 1)
{
if(p[j].known[i] == "FP" && p[j].actor == "FP")
{
p[j].wuxie--;
need = 0;
for(int k = 1; k <= n; i++)p[k].known[j] == "FP";
}
}
}
if(need)
{
if(p[i].shan != 0)p[i].shan--;
else p[i].hp--;
if(p[i].hp == 0)
{
willdie(i);
}
}
}
}
}
int limit = 1;
if(p[now].armor == 'Z')limit = 999999;
if(p[now].known[next] == "FP")
{
while(limit && p[now].sha)
{
p[now].sha--;
limit--;
if(p[next].shan != 0)p[next].shan--;
else p[next].hp--;
if(p[next].hp == 0)willdie(next);
}
}
if(p[now].known[prev] == "FP")
{
while(limit && p[now].sha)
{
p[now].sha--;
limit--;
if(p[prev].shan != 0)p[prev].shan--;
else p[prev].hp--;
if(p[prev].hp == 0)willdie(prev);
}
}
}
if(p[now].actor == "FP")
{
if(p[now].nanman != 0)
{
p[now].nanman--;
while(p[now].nanman != 0)
{
for(int i = 1; i < now; i++)
{
if(p[i].alive == 0)continue;
bool need = 1;
for(int j = 1; j <= n; j++)
{
if(p[j].alive == 1)
{
if(p[j].known[i] == "FP" && p[j].actor == "FP")
{
p[j].wuxie--;
need = 0;
for(int k = 1; k <= n; i++)p[k].known[j] == "FP";
}
}
}
if(need)
{
if(p[i].sha != 0)p[i].sha--;
else p[i].hp--;
if(p[i].hp == 0)
{
willdie(i);
}
}
}
for(int i = now + 1; i <= n; i++)
{
if(p[i].alive == 0)continue;
bool need = 1;
for(int j = 1; j <= n; j++)
{
if(p[j].alive == 1)
{
if(p[j].known[i] == "FP" && p[j].actor == "FP")
{
p[j].wuxie--;
need = 0;
for(int k = 1; k <= n; i++)p[k].known[j] == "FP";
}
}
}
if(need)
{
if(p[i].sha != 0)p[i].sha--;
else p[i].hp--;
if(p[i].hp == 0)
{
willdie(i);
}
}
}
}
while(p[now].wanjian != 0)
{
p[now].wanjian--;
for(int i = 1; i < now; i++)
{
if(p[i].alive == 0)continue;
bool need = 1;
for(int j = 1; j <= n; j++)
{
if(p[j].alive == 1)
{
if(p[j].known[i] == "FP" && p[j].actor == "FP")
{
p[j].wuxie--;
need = 0;
for(int k = 1; k <= n; i++)p[k].known[j] == "FP";
}
}
}
if(need)
{
if(p[i].shan != 0)p[i].shan--;
else p[i].hp--;
if(p[i].hp == 0)
{
willdie(i);
}
}
}
for(int i = now + 1; i <= n; i++)
{
if(p[i].alive == 0)continue;
bool need = 1;
for(int j = 1; j <= n; j++)
{
if(p[j].alive == 1)
{
if(p[j].known[i] == "FP" && p[j].actor == "FP")
{
p[j].wuxie--;
need = 0;
for(int k = 1; k <= n; i++)p[k].known[j] == "FP";
}
}
}
if(need)
{
if(p[i].shan != 0)p[i].shan--;
else p[i].hp--;
if(p[i].hp == 0)
{
willdie(i);
}
}
}
}
}
int limit = 1, hurt = 0;
if(p[now].armor == 'Z')limit = 999999;
if(p[prev].actor == "MP")hurt = prev;
else if(p[next].actor == "MP")hurt = next;
else if(p[next].actor == "ZP")hurt = next;
else if(p[prev].actor == "ZP")hurt = prev;
if(hurt)
{
while(limit && p[now].sha)
{
p[now].sha--;
limit--;
if(p[hurt].shan != 0)p[hurt].shan--;
else p[hurt].hp--;
if(p[hurt].hp == 0)willdie(hurt);
}
}
}
}
if(p[1].alive == 0)
{
cout << "FP\n";
}
else cout << "MP\n";
for(int i = 1; i <= n; i++)
{
if(p[i].alive == 1)
{
for(int j = 0; j < p[i].record.size(); j++)
{
if(p[i].record[j] == 'K' && p[i].sha)
{
p[i].sha--;
cout << p[i].record[j] << " ";
}
else if(p[i].record[j] == 'D' && p[i].shan)
{
p[i].shan--;
cout << p[i].record[j] << " ";
}
else if(p[i].record[j] == 'P' && p[i].tao)
{
p[i].tao--;
cout << p[i].record[j] << " ";
}
else if(p[i].record[j] == 'N' && p[i].nanman)
{
p[i].nanman--;
cout << p[i].record[j] << " ";
}
else if(p[i].record[j] == 'W' && p[i].wanjian)
{
p[i].wanjian--;
cout << p[i].record[j] << " ";
}
else if(p[i].record[j] == 'J' && p[i].wuxie)
{
p[i].wuxie--;
cout << p[i].record[j] << " ";
}
else if(p[i].record[j] == 'Z' && p[i].zhuge)
{
p[i].zhuge--;
cout << p[i].record[j] << " ";
}
else if(p[i].record[j] == 'F' && p[i].juedou)
{
p[i].juedou--;
cout << p[i].record[j] << " ";
}
}
}
else cout << "DEAD";
cout << endl;
}
return 0;
}