typedef struct{
char name[15]={0};
int grade[105]={0};
int sum=0;
}Grade; int main(){
Grade list[1005],p;
int n=0,m=0;
scanf("%d",&n);
scanf("%d",&m);
for(int i=0;i<n;i++){
scanf("%s",&list[i].name);
for(int j=0;j<m;j++){
scanf("%d",&list[i].grade[j]);
list[i].sum+=list[i].grade[j];
}
}
for(int j=0;j<n;j++){
for(int i=0;i<n-1;i++){
if(list[i].sum>list[i+1].sum){
p=list[i];
list[i]=list[i+1];
list[i+1]=p;
}
else if(list[i].sum==list[i+1].sum){
for(int k=0;k<m;k++){
if(list[i].grade[k]>list[i+1].grade[k]){
p=list[i];
list[i]=list[i+1];
list[i+1]=p;
break;
}
else if(list[i].grade[k]<list[i+1].grade[k])
break;
//这时不能让循环像上面一样继续下去,
//因为前面的数字优先级更高,
//不能让这个不等号成立之后的数字继续参与比较
}
}
}
}
while(n--)printf("%s ",list[n].name);//降序输出
}