#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")