import java.lang.Math;
import java.util.Scanner;
public class Main {
static int round(double i) {
if(i>0.0) return (int)(i+0.5);
else return (int)(i-0.5);
}
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int n=scan.nextInt(),k=scan.nextInt();
double[][] s=new double[1000][2],a=new double[30][30];
double[] pan=new double[k];
for(int i=0;i<n;i++)
{s[i][0]=scan.nextInt();
s[i][1]=scan.next().charAt(0);
}
for(int i=0;i<k;i++)
{for(int j=0;j<k;j++)
{int c=scan.nextInt();
pan[j]+=a[j][i]=c;}
}
for(int i=0;i<k;i++)
pan[i]/=k;
for(int i=0;i<k;i++)
{ double prem=0,count=0;
for(int j=0;j<k;j++)
if(Math.abs(a[i][j]-pan[i])<=15.0) {count++;prem+=a[i][j];}
if(count!=0) prem/=count;
for(int c=0;c<n;c++)
{
if(s[c][1]==65+i)
{double p=s[c][0]*0.6,b=prem*0.4;
s[c][0]=round(p+b);}}
}
for(int i=0;i<n-1;i++)
{int c=i;
for(int j=i+1;j<n;j++)
if(s[c][0]<s[j][0]) c=j;
if(c!=i)
{double h;
h=s[c][0];s[c][0]=s[i][0];s[i][0]=h;
if(s[c][1]!=s[i][1])
{h=s[c][1];s[c][1]=s[i][1];s[i][1]=h;}
}}
for(int j=0;j<n;j++)
System.out.println((int)s[j][0]+" "+(char)s[j][1]);
}
}