#include <stdio.h>
#include<stdlib.h>
#include <string.h>
typedef struct {
    char name[20];
    int score;
}P;
P p[200];


void printP(P p){
    printf("%s %d\n",p.name,p.score);
}

void StringSwap(char*s1,char*s2){
    char name_temp[20];
    strcpy(name_temp,s1);
    strcpy(s1,s2);
    strcpy(s2,name_temp);
}

void swap(P*p1,P*p2){
    // int temp=p1->score;
    // p1->score=p2->score;
    // p2->score=temp;
    // StringSwap(p1->name, p2->name);
    P temp=*p1;
    *p1=*p2;
    *p2=temp;
}

void asc(P*p,int l,int r){
    // if(l>=r) return;

    // int x=p[l].score,i=l-1,j=r+1;

    // while(i<j){
    //     do i++;while(p[i].score<x);
    //     do j--;while(p[j].score>x);
    //     if(i<j) swap(&p[i],&p[j]);
    // }

    // asc(p,l,j);
    // asc(p,j+1,r);
    if(l>=r) return;
    int mid=l+r>>1;
    asc(p, l, mid);
    asc(p,mid+1,r);
    int k=0,i=l,j=mid+1;
    P temp[200];
    while(i<=mid&&j<=r){
        if(p[i].score<=p[j].score) {temp[k].score=p[i].score;strcpy(temp[k++].name,p[i++].name);}
        else {temp[k].score=p[j].score;strcpy(temp[k++].name,p[j++].name);}
    }
    while (i<=mid) {temp[k].score=p[i].score;strcpy(temp[k++].name,p[i++].name);}
    while(j<=r){temp[k].score=p[j].score;strcpy(temp[k++].name,p[j++].name);}
    for(i=l,j=0;i<=r;i++,j++){swap(&p[i], &temp[j]);}

}

void desc(P*p,int l,int r){
    // if(l>=r) return;

    // int x=p[l].score,i=l-1,j=r+1;

    // while(i<j){
    //     do i++;while(p[i].score>x);
    //     do j--;while(p[j].score<x);
    //     if(i<j) swap(&p[i],&p[j]);
    // }

    // desc(p,l,j);
    // desc(p,j+1,r);
    if(l>=r) return;
    int mid=l+r>>1;
    desc(p, l, mid);
    desc(p,mid+1,r);
    int k=0,i=l,j=mid+1;
    P temp[200];
    while(i<=mid&&j<=r){
        if(p[i].score>=p[j].score) {temp[k].score=p[i].score;strcpy(temp[k++].name,p[i++].name);}
        else {temp[k].score=p[j].score;strcpy(temp[k++].name,p[j++].name);}
    }
    while (i<=mid) {temp[k].score=p[i].score;strcpy(temp[k++].name,p[i++].name);}
    while(j<=r){temp[k].score=p[j].score;strcpy(temp[k++].name,p[j++].name);}
    for(i=l,j=0;i<=r;i++,j++){swap(&p[i], &temp[j]);}
}

int main() {
    int num, flag;
    while (scanf("%d %d", &num, &flag) != EOF) { // 注意 while 处理多个 case
        for(int i=0;i<num;i++){
            scanf("%s %d",p[i].name,&p[i].score);
        }
        if(flag==1)asc(p,0,num-1);
        else desc(p,0,num-1);
        for(int i=0;i<num;i++){
            printP(p[i]);
        }
    }
    return 0;
}