#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;

const int MaxSize = 500;

struct Student {
    char name[50];
    int grade;
    int seq;//记录录入的顺序
};

bool comp0(Student lhs, Student rhs) {
    //是否交换位置 true:不交换 false:交换
    if (lhs.grade > rhs.grade)
        return true;
    else if (lhs.grade == rhs.grade && lhs.seq < rhs.seq)
        return true;
    else return false;
}

bool comp1(Student lhs, Student rhs) {
    if (lhs.grade < rhs.grade)
        return true;
    else if (lhs.grade == rhs.grade && lhs.seq < rhs.seq)
        return true;
    else return false;
}

int main() {
    Student arr[MaxSize];
    int n, flag;
    while (scanf("%d%d", &n, &flag)!=EOF) {
        int seq = 0;
        for (int i = 0; i < n; i++) {
            scanf("%s%d", &arr[i].name, &arr[i].grade);
            arr[i].seq = seq;
            seq++;
        }
        if (flag == 1)
            sort(arr, arr + n, comp1);
        else
            sort(arr, arr + n, comp0);
        for (int i = 0; i < n; i++) {
            cout << arr[i].name << " " << arr[i].grade << endl;
        }
    }
}
// 64 位输出请用 printf("%lld")