#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
****************************************************************/