#include <iostream>
#include <cstdio>
#include "string"
#include "algorithm" //一般机试都用 库里的 sort,重点调compare交换条件
using namespace std;
typedef struct list {
char name[10];
int grade;
int seq = 0;
} list;
bool compare1(list lhs, list rhs) { //用来升序的comapre
if (lhs.grade < rhs.grade) {
return true;
} else if (lhs.grade == rhs.grade && lhs.seq < rhs.seq)
return true;
else
return false;
}
bool compare2(list lhs, list rhs) { //用来降序的comapre
if (lhs.grade > rhs.grade) {
return true;
} else if (lhs.grade == rhs.grade && lhs.seq < rhs.seq)
return true;
else
return false;
}
int main() {
int peopleNum = 0;
int method = 0; //0是降序,1是升序
while (scanf("%d", &peopleNum) != EOF) {
scanf("%d", &method);
list StuGrade[peopleNum];
for (int i = 0; i < peopleNum; i++) {
scanf("%s %d", &StuGrade[i].name, &StuGrade[i].grade);
StuGrade[i].seq = i;
}
if (method == 1) {//升序
sort(StuGrade, StuGrade + peopleNum, compare1);
} else { //降序
sort(StuGrade, StuGrade + peopleNum, compare2);
}
for (int i = 0; i < peopleNum; i++) {
printf("%s %d\n", StuGrade[i].name, StuGrade[i].grade);
}
}
return 0;
}