#include <stdio.h>
int main(){
int number;
scanf("%d", &number);
//定义一个student结构体,包含学号和成绩
struct student{
int num;
int grade;
}student[number];
//输入学生信息
for (int i = 0; i < number; ++i) {
scanf("%d %d", &student[i].num, &student[i].grade);
}
//冒泡排序
struct student temp;
for (int i = 0; i < number-1; ++i) {
for (int j = 0; j < number - 1 - i; ++j) {
if((student[j].grade > student[j+1].grade)
|| ((student[j].grade == student[j+1].grade) && student[j].num > student[j+1].num)){
temp = student[j];
student[j] = student[j+1];
student[j+1] = temp;
}
}
}
//输出
for (int i = 0; i < number; ++i) {
printf("%d %d\n", student[i].num, student[i].grade);
}
return 0;
}