#include <stdio.h>
typedef struct Student{
char name[20];
int score;
int order;
}Student;
int cmp0(const void*a,const void*b){
if(((Student*)a)->score==((Student*)b)->score){
return ((Student*)a)->order>((Student*)b)->order;//按输入顺序升序
}
return ((Student*)a)->score<((Student*)b)->score;//按分数降序
}
int cmp1(const void*a,const void*b){
if(((Student*)a)->score==((Student*)b)->score){
return ((Student*)a)->order>((Student*)b)->order;//按输入顺序升序
}
return ((Student*)a)->score>((Student*)b)->score;//按分数升序
}
int main() {
int n,rule;
while(~(scanf("%d%d",&n,&rule))){//这里的scanf里面的"%d\n%d"加不加\n都行
Student arr[n];
for(int i=0;i<n;++i){
scanf("%s %d",&arr[i].name,&arr[i].score);
arr[i].order=i;
}
if(rule==0){//按分数降序
qsort(arr,n,sizeof(Student),cmp0);
}
if(rule==1){//按分数升序
qsort(arr,n,sizeof(Student),cmp1);
}
for(int i=0;i<n;++i){
printf("%s %d\n",arr[i].name,arr[i].score);
}
}
return 0;
}