#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;
string l1[101],l[101],gg;
int f[101][101]={0},t[101]={0},ren[101]={0},h[101]={0};
void temp(int a,int b)
{
int tt;
tt=h[a];
h[a]=h[b];
h[b]=tt;
gg=l[a];
l[a]=l[b];
l[b]=gg;
return;
}
char s;
int main()
{
ifstream fin("publish.in");
ofstream fout("publish.out");
int n,m=1,j,i,k,o;
fin>>n;
for (int i=1;i<=n;i++)
{
fin>>l1[i];
for (j=1;j<=m;j++)
if (l[j]==l1[i])
{
ren[j]++;
f[j][ren[j]]=i;
break;
}
if (j>m)
{
l[m]=l1[i];
ren[m]=1;
f[m][1]=i;
m++;
}
}
m--;
for (int i=1;i<=n;i++)
for (j=1;j<=n;j++)
{
fin>>s;
if (s=='1')
t[j]++;
}
for (i=1;i<=m;i++)
{
for (j=1;j<=ren[i];j++) f[i][j]=t[f[i][j]];
for (j=1;j<=ren[i]-1;j++)
for (k=j+1;k<ren[i];k++)
if (f[i][j]<f[i][k])
{
o=f[i][j];
f[i][j]=f[i][k];
f[i][k]=o;
}
for (j=1;j<=ren[i];j++)
if (f[i][j]<j) break;
j--;
h[i]=j;
}
for (int i=1;i<=m-1;i++)
for (int j=1;j<=m-i;j++)
{
if (h[j]<h[j+1])
temp(j,j+1);
else
if (h[j]==h[j+1])
{
int xx=0;
while (l[j][xx]>=l[j+1][xx])
{
if (l[j][xx]>l[j+1][xx])
{
temp(j,j+1);
break;
}
xx++;
if (xx>l[j].length()) break;
}
}
}
for (int i=1;i<=m;i++)
fout<<l[i]<<' '<<h[i]<<endl;
fin.close();
fout.close();
return 0;
}