/*#include<stdio.h>
typedef struct
{
char n[12];
int a,b,c;
}score;
int main()
{
int x,y=0,z=0,i,j;
int save=1;
score arr[101]={};
scanf("%d",&x);
for(i=1; i<=x; i++)
{
scanf("%s %d %d %d", arr[i].n, &arr[i].a, &arr[i].b, &arr[i].c);
}
for(i=1; i<=x; i++)
{
if(arr[i].a>arr[save].a)
{
save=i;
}
}
for(i=1; i<=x; i++)
{
if(i!=save)
{
if (arr[save].b < arr[i].b)
{
y++;
}
if (arr[save].c < arr[i].c)
{
z++;
}
}
}
printf("%s %d %d",arr[save].n,y+1,z+1);
}*/
/*
#include<stdio.h>
typedef struct
{
int s,f;
}super;
int main()
{
int x,y,i,j;
super arr[201];
scanf("%d",&x);
for(i=1; i<=x; i++)
{
scanf("%d",&arr[i].s);
arr[i].f=0;
}
for(i=1; i<=x; i++)
{
for(j=1; j<=x; j++)
{
if(arr[i].s<arr[j].s)
{
arr[i].f++;
}
}
}
for(i=1; i<=x; i++)
{
printf("%d %d\n",arr[i].s,arr[i].f+1);
}
return 0;
}
*/
/*
#include<stdio.h>
typedef struct
{
int c,s,b;
}asia;
int main()
{
int x,y,i,j;
int ht[101]={};
asia arr[101]={},temp;
scanf("%d",&x);
for(i=1; i<=x; i++)
{
scanf("%d %d %d",&arr[i].c, &arr[i].s, &arr[i].b);
}
for(i=1; i<x; i++)
{
for(j=1; j<=x-i; j++)
{
if (arr[j].b < arr[j+1].b)
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
printf("%d %d\n",arr[1].c,arr[1].s);
ht[arr[1].c]++;
printf("%d %d\n",arr[2].c,arr[2].s);
ht[arr[2].c]++;
for(i=3; i<=x; i++)
{
if(ht[arr[i].c]<2)
{
printf("%d %d",arr[i].c,arr[i].s);
break;
}
}
return 0;
}
char str1[50]="aaa";
char str2[50]="ccc";
(x)
if(str1 == str2)
if(&str1[0] == &str2[0])
strcmp(str1,str2) < 0 : 두 단어가 사전식 순서로 있는지?
== 0 : 두 단어가 같은지?
> 0 : 반대 순서로 있는지?
(한 페이지에 한 단어만 있는 영어사전에서) str1의 페이지 - str2의 페이지
*/
#include<stdio.h>
typedef struct
{
char n[100];
int d;
}plan;
int main()
{
int x,y,m,d,i,j;
plan arr[101],temp;
scanf("%d",&x);
for(i=1; i<=x; i++)
{
scanf("%s %d %d %d",arr[i].n,&y,&m,&d);
arr[i].d=10000*y+100*m+d;
}
for(i=1; i<=x; i++)
{
for(j=1; j<=x; j++)
{
if(arr[j].d<arr[j+1].d)
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
else if(strcmp(arr[j].d,arr[j+1].d)>0)
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(i=1; i<=x; i++)
{
printf("%s",arr[i].n);
}
}



