#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct{char ID[6+1];char name[8+1];int grade;} Student;
int compareId(const void*a,const void *b)
{
/*一般而言const struct Student *a=a??这个括号有意义吗*/
return strcmp(((const Student*)a)->ID,((const Student*)b)->ID);
}
int comparename(const void*a,const void *b)
{
int k=strcmp(((const Student *)a)->name,((const Student*)b)->name);
if(k==0)
return strcmp(((const Student*)a)->ID,((const Student*)b)->ID);
else
return k;
}
int comparegrade(const void*a,const void *b)
{
int k=((const Student*)a)->grade-((const Student*)b)->grade;
if(k!=0)
return k;
else
return strcmp(((const Student*)a)->ID,((const Student*)b)->ID);
}
int main()
{
int N,C;
scanf("%d %d",&N,&C);
Student array[100000];
for(int i=0;i<N;i++)
{
scanf("%s %s %d",array[i].ID,array[i].name,&array[i].grade);
}
switch (C)
{
case 1:qsort(array,N,sizeof(Student),compareId);
break;
case 2:qsort(array,N,sizeof(Student),comparename);
break;
case 3:qsort(array,N,sizeof(Student),comparegrade);
break;
}
for(int j=0;j<N;j++)
{
printf("%s %s %d\n",array[j].ID,array[j].name,array[j].grade);
}
}