#include<bits/stdc++.h>
using namespace std;
int n,m,k,ans=0;
struct note{
int x,yy,zz,ts;
char problem;
string team,zt;
bool tg=false;
}a[10005];
struct team{
int fs[28],tgts,ci=0,id,pm,pmzs;
string name;
bool tgt[28]={false};
}b[1005];
int cmp(team x,team y){
if(x.tgts==y.tgts){
for(int i=1;i<=n;i++)
if(x.fs[i]>y.fs[i])
return y.fs[i]<x.fs[i];
else if(x.fs[i]<y.fs[i])
return x.fs[i]<y.fs[i];
return x.id<y.id;
}
else return x.tgts<y.tgts;
}
bool tf=false;
int main(){
cin>>n>>m>>k;
for(int i=1;i<=k;i++){
scanf("%d:%d:%d",&a[i].x,&a[i].yy,&a[i].zz);
cin>>a[i].problem>>a[i].team;
getline(cin,a[i].zt);
a[i].ts=a[i].problem-64;
}
for(int i=1;i<=k;i++){
if(ans==m) break;
tf=false;
for(int j=1;j<=i;j++)
if(a[j].team==a[i].team&&i!=j){
tf=true;
break;
}
if(!tf) b[ans+1].name=a[i].team,ans++,b[ans+1].id=ans+1;
}
ans=0;
for(int i=1;i<=k;i++){
for(int j=1;j<=m;j++)
if(b[j].name==a[i].team&&(a[i].x<4||(a[i].x==4&&a[i].yy==0&&a[i].zz==0)))
if(a[i].zt=="Accepted"&&!b[j].tgt[a[i].ts]){
b[j].fs[a[i].ts]=a[i].yy+a[i].x*60+b[j].ci*20;
b[j].tgt[a[i].ts]=true;
b[j].tgts++;
a[i].tg=true;
}else if(!b[j].tgt[a[i].ts]) b[j].ci++,a[i].tg=true;
}
sort(b+1,b+m+1,cmp);
for(int i=1,j=m;i<=m,j>=1;i++,j--)
cout<<b[i].name<<endl,b[i].pm=b[i].pmzs=j;
for(int i=1;i<=n;i++){
for(int j=1;j<=k;j++)
for(int x=1;x<=m;x++)
if(a[j].zt=="Accepted"&&!b[x].tgt[a[j].ts]&&a[j].ts==i){
b[x].fs[a[j].ts]=a[j].yy+a[j].x*60+b[x].ci*20;
b[x].tgt[a[j].ts]=true;
b[x].tgts++;
a[j].tg=true;
}else if(!b[x].tgt[a[j].ts]) b[x].ci++,a[j].tg=true;
sort(b+1,b+m+1,cmp);
for(int j=m;j>=1;j--)
b[j].pm=j;
for(int j=1;j<=m;j++)
if(b[j].pm!=b[j].pmzs&&b[j].pm<b[j].pmzs) cout<<b[j].name<<endl;
for(int j=m;j>=1;j--)
b[j].pmzs=b[j].pm;
}
return 0;
}