//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;
}