#include <bits/stdc++.h>
#include <sstream>
using namespace std;
int idx=0;
struct d
{
string name;
string start_time;
string last_time;
};
//两个冒泡排序,保证稳定性
void sortbystart(d rizhi[])
{
for(int i=1;i<idx;i++)
{
for(int j=0;j<idx-i;j++)
{
if(rizhi[j].start_time>rizhi[j+1].start_time)
{
swap(rizhi[j],rizhi[j+1]);
}
}
}
}
void sortbyconsume(d rizhi[])
{
for(int i=1;i<idx;i++)
{
for(int j=0;j<idx-i;j++)
{
if(rizhi[j].last_time>rizhi[j+1].last_time)
{
swap(rizhi[j],rizhi[j+1]);
}
}
}
}
int main() {
string s;
d rizhi[100000];
while(getline(cin,s))
{
rizhi[idx].name=s;
stringstream ss(s);
string n,t1,t2,l,t;
int index=0;
while(ss>>t)
{
if(index==1) t1=t;//年月日
if(index==2) t2=t;//时分秒毫秒
if(index==3) l=t;//消耗时间
index++;
}
//
rizhi[idx].start_time=t1+t2;
rizhi[idx].last_time=l;
idx++;
}
//处理一下消耗时间
int maxs=0;
for(int i=0;i<idx;i++)
{
if(maxs<rizhi[i].last_time.length())
{
maxs=rizhi[i].last_time.length();
}
}
//缺的补零
//比如字符串91.11直接和字符串211.22比肯定是后者小,我们在短的前面补充合适的数量的0即可
for(int i=0;i<idx;i++)
{
if(rizhi[i].last_time.length()<maxs)
{
rizhi[i].last_time.insert(0,maxs-rizhi[i].last_time.length(),'0');
}
}
//开始排序
//先根据开始时间排序
sortbystart(rizhi);
sortbyconsume(rizhi);
for(int i=0;i<idx;i++)
{
cout<<rizhi[i].name<<endl;
}
}
// 64 位输出请用 printf("%lld")