/*
#include<stdio.h>
int main()
{
int i,n,sum=0;
for(i=0; i<5; i++)
{
scanf("%d",&n);
sum+=n*n;
}
printf("%d",sum%10);
}
//*/
//#include<stdio.h>
//
//struct student
//{
// int c;
// int num;
// int point;
//
//};
//
//int main()
//{
// int check[10001] = {0};
// int n,i,j,max=0,mm=0,mn=0,mo=0;
// scanf("%d",&n);
// struct student s[100];
// for(i=0; i<n; i++)
// {
// scanf("%d %d %d",&s[i].c,&s[i].num, &s[i].point);
// }
// for(i=0; i<n; i++)
// {
// if(s[i].point>max)
// {
// max=s[i].point;
// mm=i;
// }
// }
// check[s[mm].c]++;
// printf("%d %d\n",s[mm].c,s[mm].num);
// s[mm].point=0;
// max=0;
// for(i=0; i<n; i++)
// {
// if(s[i].point>max)
// {
// max=s[i].point;
// mo=i;
// }
// }
// check[s[mo].c]++;
// printf("%d %d\n",s[mo].c, s[mo].num);
// s[mo].point=0;
// max=0;
//
// for(i=1; i<=10000; i++)
// {
// if(check[i]==2) {
// for(j=0; j<n; j++) {
// if(i==s[j].c)
// s[j].point = 0;
// }
// }
// }
// for(i=0; i<n; i++)
// {
// if(s[i].point>max)
// {
// max=s[i].point;
// mn=i;
// }
// }
// printf("%d %d",s[mn].c,s[mn].num);
//}
#include<stdio.h>
struct node {
char name[100];
int c;
};
int main() {
struct node k[100] = {0};
struct node temp;
int i, j, n;
scanf("%d", &n);
for(i=0; i<n; i++) {
scanf("%s %d", k[i].name, &k[i].c);
}
printf("before : \n");
for(i=0; i<n; i++) {
printf("%s %d\n", k[i].name, k[i].c);
}
for(i=0; i<n; i++) {
for(j=0; j<n-1; j++) {
if(k[j].c > k[j+1].c) {
temp = k[j];
k[j] = k[j+1];
k[j+1] = temp;
}
}
}
printf("after : \n");
for(i=0; i<n; i++) {
printf("%s %d\n", k[i].name, k[i].c);
}
}