#include<stdio.h>
#include<string.h>
int maxsize=1005;
typedef struct{
char name[333];
int age;
int grade;
}StudentInfo;
void qsort(StudentInfo st[], int l, int r){
StudentInfo temp;
int i=l,j=r;
if(l<r){
temp=st[l];
while(i!=j){
while(i<j){
if(st[j].grade>temp.grade) --j;
else if((st[j].grade==temp.grade)&&(strcmp(st[j].name, temp.name)>0)) --j;
else if((st[j].grade==temp.grade)&&(strcmp(st[j].name, temp.name)==0)&&(st[j].age>=temp.age)) --j;
else break;
}
if(i<j){
st[i]=st[j];
i++;
}
while(i<j){
if(st[i].grade<temp.grade) ++i;
else if((st[i].grade==temp.grade)&&(strcmp(st[i].name, temp.name)<0)) ++i;
else if((st[i].grade==temp.grade)&&(strcmp(st[i].name, temp.name)==0)&&(st[i].age<=temp.age)) ++i;
else break;
}
if(i<j){
st[j]=st[i];
j--;
}
}
st[i]=temp;
qsort(st, l, i-1);
qsort(st,i+1, r);
}
}
int main(){
int i,n;
StudentInfo si[maxsize];
while(scanf("%d", &n)==1){
for(i=0; i<n; i++){
scanf("%s%d%d",si[i].name, &si[i].age, &si[i].grade);
}
qsort(si, 0, n-1);
for(i=0; i<n; i++){
printf("%s %d %d\n",si[i].name, si[i].age, si[i].grade);
}
}
return 0;
}
/**************************************************************
Problem: 2198
User: admin
Language: C
Result: Accepted
Time:13 ms
Memory:1356 kb
****************************************************************/