#include <stdio.h>
#include <algorithm>
using namespace std;
struct E{
char name[100];
int num;//用于标注录入顺序
int score;
}buf[1000];
int direct;
bool cmp1(struct E a, E b)
{
if(a.score!=b.score) return a.score<b.score;
else return a.num<b.num;//录入顺序
}
bool cmp2(E a,E b)
{
if(a.score!=b.score) return a.score>b.score;
else return a.num<b.num;//录入顺序
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
scanf("%d",&direct);
for(int i=0;i<n;++i){
scanf("%s %d",buf[i].name,&buf[i].score);
buf[i].num=i;
}
if(direct==0)
sort(buf,buf+n,cmp2);
else if(direct==1)
sort(buf,buf+n,cmp1);
for(i=0;i<n;++i)
{
printf("%s %d\n",buf[i].name,buf[i].score);
}
}
return 0;
}