//KY1 成绩排序
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int mxn=100005;
int n, op;
struct E{
    char s[mxn];
    int num;
    int p;
}e[mxn];
bool cmp1(E x,E y)
{
    if(x.num==y.num) return x.p<y.p;
    return x.num>y.num;
}
bool cmp2(E x,E y)
{
    if(x.num==y.num) return x.p<y.p;
    return x.num<y.num;
}
int main()
{
    while(cin>>n)
    {
        cin>>op;
        for(int i=1;i<=n;i++){
            cin>>e[i].s>>e[i].num;
            e[i].p=i;
        }
        if(op==0) sort(e+1,e+n+1,cmp1);
        else sort(e+1,e+n+1,cmp2);
        for(int i=1;i<=n;i++) cout<<e[i].s<<" "<<e[i].num<<"\n";
    }
    return 0;
}