/*
#include<stdio.h>
#include<string.h>
struct student
{
char str[11];
int score;
};
int main()
{
int n, i, j, a, b, max=1;
struct student x[101];
scanf("%d %d", &a, &b);
for(i=1;i<=a;i++)
{
scanf("%s %d", &x[i].str, &x[i].score);
}
for(i=1;i<=b;i++)
{
for(j=1;j<=a;j++)
{
if(x[j].score>x[max].score)
{
max=j;
}
}
printf("%s", x[max].str);
x[max].score=0;
printf("\n");
}
}
*/
/*
#include<stdio.h>
struct score
{
int score1;
int list;
};
int main()
{
int n, i, j, max=1, a=1;
struct score x[201];
scanf("%d", &n);
for(i=1;i<=n;i++)
{
scanf("%d", &x[i].score1);
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(x[i].score1<x[j].score1)
{
a++;
}
}
printf("%d %d\n", x[i].score1, a);
a=1;
}
return 0;
}
*/
/*
1 ~ 26
A ~ Z
26+1 ~ 26+26
AA AZ
26+26+1
BA
26*26+1 ~ 26*26+26
ZA ~ ZZ
26*26*26+1
AAA
#inlcude<stdio.h>
int main()
{
int n;
scanf("%d", &n);
while(n%60==0)
{
n/60;
}
if()
}
*/
/*
#include <stdio.h>
int a[10001];
int n, i, j, temp;
int main() {
scanf("%d", &n);
for (i=1; i<=n; i++)
scanf("%d", &a[i]);
for(i=1; i<n; i++)
{
for(j=1;j<=n-i;j++)
{
if (a[j] > a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for (i = 1; i <= n; i++)
printf("%d\n", a[i]);
return 0;
}
*/
/*
#include <stdio.h>
int a[10001];
int n, i, j, temp, min;
int main() {
scanf("%d", &n);
for (i = 1; i <= n; i++)
scanf("%d", &a[i]);
for (i=1; i<n; i++) {
min=i;
for (j=i+1; j<=n; j++) {
if(a[min]>a[j])
{
min=j;
}
}
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
for (i=1; i<=n; i++)
printf("%d\n", a[i]);
return 0;
}
*/
/*
#include <stdio.h>
int a[10001];
int n, i, j, temp, key;
int main() {
scanf("%d", &n);
for (i = 1; i <= n; i++)
scanf("%d", &a[i]);
for (i=2; i<=n; i++)
{
key=a[i];
for(j=i-1; j>=1&&(key<a[j]) ;j--)
{
a[j+1]=a[j];
}
a[j+1]=key;
}
for (i=1; i<=n; i++)
printf("%d\n", a[i]);
return 0;
}
*/
/*
#include<stdio.h>
int main()
{
int n, i, j, temp, arr[101];
scanf("%d", &n);
for(i=1;i<=n;i++)
{
scanf("%d", &arr[i]);
}
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(arr[j]<arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(i=1;i<=n;i++)
{
printf("%d ", arr[i]);
}
return 0;
}
*/
/*
#include<stdio.h>
#include<string.h>
struct student
{
char str[11];
int score;
};
int main()
{
int n, i, j;
struct student x[51], temp;
scanf("%d", &n);
for(i=1;i<=n;i++)
{
scanf("%s %d", x[i].str, &x[i].score);
}
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(x[j].score<x[j+1].score)
{
temp=x[j+1];
x[j+1]=x[j];
x[j]=temp;
}
}
}
printf("%s", x[3].str);
return 0;
}
*/
/*
#include<stdio.h>
struct machine
{
int a;
int b;
};
int main()
{
int n, i, j;
struct machine x[101], temp;
scanf("%d", &n);
for(i=1;i<=n;i++)
{
scanf("%d %d", &x[i].a, &x[i].b);
}
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(x[j].a>x[j+1].a)
{
temp=x[j];
x[j]=x[j+1];
x[j+1]=temp;
}
}
}
for(i=1;i<=n;i++)
{
printf("%d %d\n", x[i].a, x[i].b);
}
return 0;
}
*/
/*
#include<stdio.h>
struct score
{
int num;
int math;
int information;
};
int main()
{
int n, i, j;
struct score x[1001], temp;
scanf("%d", &n);
for(i=1;i<=n;i++)
{
scanf("%d %d", &x[i].math, &x[i].information);
x[i].num=i;
}
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(x[j].math<x[j+1].math)
{
temp=x[j];
x[j]=x[j+1];
x[j+1]=temp;
}
else if(x[j].math==x[j+1].math)
{
if(x[j].information<x[j+1].information)
{
temp=x[j];
x[j]=x[j+1];
x[j+1]=temp;
}
else if(x[j].information==x[j+1].information)
{
if(x[j].num>x[j+1].num)
{
temp=x[j];
x[j]=x[j+1];
x[j+1]=temp;
}
}
}
}
}
for(i=1;i<=n;i++)
{
printf("%d %d %d\n", x[i].num, x[i].math, x[i].information);
}
return 0;
}
strcmp("abc","cde") < 0
strcmp("abc","abc") ==0
strcmp("cde","abc") > 0
*/
#include<stdio.h>
#include<string.h>
struct plan
{
char str[100];
int day;
};
int main()
{
int n, i, j,y,m,d;
struct plan x[101], temp;
scanf("%d", &n);
for(i=1;i<=n;i++)
{
scanf("%s %d %d %d", x[i].str, &y, &m, &d);
x[i].day=y*10000+m*100+d;
}
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(x[j].day>x[j+1].day)
{
temp=x[j];
x[j]=x[j+1];
x[j+1]=temp;
}
else if(x[j].day==x[j+1].day)
{
if(strcmp(x[j].str,x[j+1].str)>0)
{
temp=x[j];
x[j]=x[j+1];
x[j+1]=temp;
}
}
}
}
for(i=1;i<=n;i++)
{
printf("%s\n", x[i].str);
}
}