#include <iostream>
#include <queue>
#include <string>
using namespace std;

struct Node{
    string name;
    int num;
    int i;
    int k ;
    Node(string name,int num,int i ,int k)
        :name(name),num(num),i(i),k(k){}
    bool operator<(const Node &s) const  {
            if(k==0) {
                if(num==s.num)
                return i>s.i;
                else return num<s.num;
            }
            if(k==1) {
                if(num==s.num)
                return i>s.i;
                else return num>s.num;
            }
            return num>s.num;
    }

};

int main() {
    int n,k;
    cin>>n>>k;
    string s;
    int a;
    priority_queue<Node> que;
    int i =0;
    while(cin>>s>>a){
        i++;
        que.push(Node(s,a,i,k));
    }
    while(!que.empty()){
        auto tem = que.top();
        que.pop();
        cout<<tem.name<<' '<<tem.num<<endl;
    }
   
}
// 64 位输出请用 printf("%lld")