/*************************

题意:

给出一堆学生记录,根据c的不同做排序

c=1按id排序

c=2按名字排序,

c=3按成绩排序

名字或成绩相同再按id安排

/************************

求解要点和注意点:

用sort实现非常容易,但必须要记住一点:

这里n有100000个

如果用cin和cout做输入输出将会非常慢

所以必须改为scanf和printf

用%s做输入输出

************************/



/***********************

笔记:

看到N大于10的5次方时,请用scanf和printf!

*********************/

#include<iostream>

#include<stdio.h>

#include<string>

#include<vector>

#include<queue>

#include<stdlib.h>

#include<algorithm>

#include<string.h>

using namespace std;

#define M 10010

#define INF 0x7fffffff



struct Student{

int id;

string name;

int grade;

};



bool cmp1(Student a,Student b){

return a.id<b.id;

}

bool cmp2(Student a,Student b){

if(a.name<b.name)

return true;

else if(a.name == b.name)

return a.id<b.id;

else return false;

}

bool cmp3(Student a,Student b){

if(a.grade<b.grade)

return true;

else if(a.grade == b.grade)

return a.id<b.id;

else return false;

}





int main(){

int n,c,i;

scanf("%d%d",&n,&c);

int id;

string name;

int grade;

Student s;

vector<Student> vs;

char namec[100];

for(i=0;i<n;i++){

scanf("%d%s%d",&id,namec,&grade);

s.name=string(namec);

s.id=id;

s.grade=grade;

vs.push_back(s);

}



if(c==1){

sort(vs.begin(),vs.end(),cmp1);

}

else if(c==2){

sort(vs.begin(),vs.end(),cmp2);

}

else sort(vs.begin(),vs.end(),cmp3);



for(i=0;i<vs.size();i++){

printf("%06d %s %d\n",vs[i].id,vs[i].name.c_str(),vs[i].grade);

}

return 0;

}