#include <stdio.h>
#include <string.h>
struct ab
{
char na[100];
int ymd;
};
int main()
{
int i, j, n, y, m, d;
struct ab atk[101], temp;
scanf ("%d",&n);
for(i=1; i<=n; i++)
{
scanf("%s %d %d %d", atk[i].na, &y, &m, &d);
atk[i].ymd = d+m*100+y*10000;
}
for(i=1; i<=n; i++)
{
for(j=1; j<n; j++)
{
if(atk[j].ymd > atk[j+1].ymd)
{
temp = atk[j];
atk[j] = atk[j+1];
atk[j+1] = temp;
}
}
}
// for(i=1; i<=n; i++)
// {
// printf("%s %d\n", atk[i].na, atk[i].ymd);
// }
for(i=1; i<=n; i++)
{
for(j=1; j<n; j++)
{
if(atk[j].ymd == atk[j+1].ymd)
{
if(strcmp(atk[j+1].na, atk[j].na)==-1)
{
//printf("%s가 먼저 %s\n", atk[j+1].na,atk[j].na);
temp = atk[j];
atk[j] = atk[j+1];
atk[j+1] = temp;
}
}
}
}
// for(i=1; i<=n; i++)
// {
// printf("%s %d\n", atk[i].na, atk[i].ymd);
// }
for(i=1; i<=n; i++)
{
printf("%s\n", atk[i].na);
}
return 0;
}