#include<cstdio>
#include<algorithm>
using namespace std;
struct Student{
	char name[50];
	int grade;
	int sequence;//记录录入的顺序
};
bool comp1(Student lhs,Student rhs){
	if (lhs.grade < rhs.grade){
		return true;
	}
	else if (lhs.grade ==rhs.grade && lhs.sequence < rhs.sequence){
		return true;
	}
	else{
		return false;
	}
}
bool comp0(Student lhs,Student rhs){
	if (lhs.grade > rhs.grade){
		return true;
	}
	else if(lhs.grade ==rhs.grade && lhs.sequence < rhs.sequence){
		return true;
	}
	else{
		return false;
	}
}

int main(){
	int N;//数组大小
	int order;//升序or降序
	Student arr[1000];
	while (scanf("%d%d",&N,&order) != EOF){
		int sequence = 0;//sequence 用于记录序号
		for (int i = 0; i < N; ++i){
			scanf("%s %d",arr[i].name,&arr[i].grade);
			arr[i].sequence = sequence;
			++sequence;//每次读取后sequence自增 从小到大
		}
		if (0==order ){
			sort(arr,arr+N,comp0);
		}
		else{
			sort(arr,arr+N,comp1);
		}
			for (int i = 0; i < N; ++i){
				printf("%s %d\n",arr[i].name,arr[i].grade);
			}
	}
}