#include <bits/stdc++.h>
#define ll long long
#define lbit(u) (u&(-u))
using namespace std;
const int N=100009;
struct Grade{
string name;
int g[11];
};
bool dictord(string s1,string s2){
for(int i=0;i<min(s1.size(),s2.size());i++){
if(s1[i]<s2[i])return true;
if(s1[i]>s2[i])return false;
}
return s1.size()<s2.size();
}
int timestamp[109][10009];
bool cmp(const Grade&a,const Grade&b){
int aa=0,bb=0;
for(int i=0;i<10;i++){
aa+=a.g[i];
bb+=b.g[i];
}
return aa>bb||aa==bb&&(aa!=0&&bb!=0)&×tamp[id[a.name]][aa]<timestamp[id[b.name]][bb]||aa==0&&bb==0&&a.name<b.name;
}
map<string,int>id;
Grade gd[109];
int n,m,k;
int main(){
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
string s;
cin>>s;
id[s]=i;
gd[i].name=s;
}
for(int i=1;i<=m;i++){
string s;
char c;
int sc,sum=0;
cin>>s>>c>>sc;
gd[id[s]].g[c-'A']=max(sc,gd[id[s]].g[c-'A']);
for(int j=0;j<10;j++)sum+=gd[id[s]].g[j];
timestamp[id[s]][sum]=i;
}
sort(gd+1,gd+1+n,cmp);
for(int i=1;i<=n;i++){
int sum=0;
for(int j=0;j<10;j++)sum+=gd[i].g[j];
cout<<gd[i].name<<" "<<sum<<endl;
}
return 0;
}
/*
*/