#include <iostream>
#include <cstring>
#include <algorithm>
#include <math.h>
using namespace std;
const int N = 1010;
int n,k;
int a[N][N];
int avg[N];
int sum[N][N];
int ssum[N];
int cnt[N];
typedef struct lilun{
int score;
char group;
bool operator < (const lilun &e){
return score > e.score;
}
}LiLun[N];
int main(){
LiLun l;
cin >> n >> k;
for(int i = 1;i <= n;i ++)cin >> l[i].score >> l[i].group;
for(int i = 1;i <= k;i ++){
for(int j = 1;j <= k;j ++)
{
cin >> a[i][j];
sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + a[i][j];
}
}
for(int i = 1;i <= k ;i ++){
ssum[i] = sum[k][i] - sum[k][i - 1];
avg[i] = ssum[i] / k;
}
for(int i = 1;i <= k;i ++){
for(int j = 1;j <= k;j ++){
if(abs(a[j][i] - avg[i]) > 15){
ssum[i] -= a[j][i];
cnt[i] ++;//剔除次数;
}
}
}
for(int i = 1;i <= k;i ++) {
avg[i] = ssum[i] / (k - cnt[i]) ;
}
for(int i = 1;i <= n;i ++){
int t = 'A';
int t2 = l[i].group;
l[i].score = round(l[i].score * 0.6 + avg[t2 - t + 1] * 0.4);
}
sort(l + 1,l + n + 1);
for(int i = 1;i <= n;i ++)cout << l[i].score <<" " << l[i].group << endl;
return 0;
}