#include <stdio.h>
#include<stdlib.h>
#include <string.h>

#define N 100


typedef struct student
{
    int sno;
    int score;
}STUDENT;

int SortAsc(int a,int b)//判断前后大小,不同结果返回不同的值用于后续判断
{
    if(a>b)
    {
        return 1;
    }
    else if (a==b)
    {
        return 2;
    }
    else
    {
        return 0;
    }
}

void bubble(STUDENT stu[],int SortAsc(int a, int b),int num)//冒泡排序函数
{
    STUDENT temp;
    int flag=0;
    for(int i=0;i<num;i++)
    {
        
        for(int j=num-1;j>i;j--)
        {
            if(SortAsc(stu[j-1].score,stu[j].score)==1)
            {
                flag=1;
                temp=stu[j-1];
                stu[j-1]=stu[j];
                stu[j]=temp;
            }
            else if(SortAsc(stu[j-1].score,stu[j].score)==2)
            {
                if(stu[j-1].sno>stu[j].sno)
                {
                    flag=1;
                    temp=stu[j-1];
                    stu[j-1]=stu[j];
                    stu[j]=temp;
                }
            }
        }
        if(flag==0)
        {
            break;
        }
    }
}

void output(STUDENT stu[],int num)//输出函数
{
    for(int i=0;i<num;i++)
    {
        
        printf("%d %d\n",stu[i].sno,stu[i].score);
    }
}

int main() 
{
    int num;
    while(scanf("%d",&num)!=EOF)
    {
        STUDENT stu[num];
        for(int i=0;i<num;i++)
        {
            scanf("%d",&stu[i].sno);
            scanf("%d",&stu[i].score);
        }
        bubble(stu,SortAsc,num);
        output(stu,num);
    }
    return 0;
}