#include <iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
struct Student {
char name[100];
int grade;
int sq;
};
bool comp0(Student lh, Student rh) { //降序,左比小的时候换!
if (lh.grade != rh.grade) {
return lh.grade > rh.grade;
} else {
return lh.sq < rh.sq; // 学生序号从小到大排序
}
}
bool comp1(Student lh, Student rh) { //升序
if (lh.grade != rh.grade) {
return lh.grade < rh.grade;
} else {
return lh.sq < rh.sq; // 学生序号从小到大排序
}
}
int main() {
int seq = 0;
int i;
int n;//参与排序的数列
int cab;//排序方法
Student arr[1000];
while(scanf("%d %d", &n, &cab) != EOF){
for (int i = 0; i < n; i++) {
scanf("%s %d", arr[i].name, &arr[i].grade);
arr[i].sq = i + 1;
}
if (cab == 0) {
sort(arr, arr + n, comp0);
for (i = 0; i < n; i++) {
printf("%s %d\n", arr[i].name, arr[i].grade);
}
} else if (cab == 1) {
sort(arr, arr + n, comp1);
for (i = 0; i < n; i++) {
printf("%s %d\n", arr[i].name, arr[i].grade);
}
}
}
}
// 64 位输出请用 printf("%lld")