#include <bits/stdc++.h>
using namespace std;
// 定义一个结构体用来存储记录信息
struct record {
string name; // 记录中的人名
string startDay; // 开始日期
string startTime; // 开始时间
double costTime; // 持续时间,以某种单位(可能是小时)表示
string line; // 原始输入字符串
};
// 比较函数,用于确定两个记录的排序规则
bool cmp(record r1, record r2) {
// 首先比较持续时间
if (r1.costTime != r2.costTime) return r1.costTime < r2.costTime;
else {
// 如果持续时间相同,则比较开始日期
if (r1.startDay != r2.startDay) return r1.startDay < r2.startDay;
// 如果开始日期也相同,则比较开始时间
else return r1.startTime < r2.startTime;
}
}
int main() {
record r[10000]; // 声明一个记录数组,用来存储最多10000条记录
int i = 0;
string s;
// 循环读取输入直到EOF
while (getline(cin, s)) {
r[i].line = s; // 将整行文本存储在line字段中
istringstream lineStream(s); // 使用istringstream从字符串中提取数据
// 将提取的数据存储到相应的字段
lineStream >> r[i].name >> r[i].startDay >> r[i].startTime >> r[i].costTime;
i++;
}
// 对记录数组进行排序,根据定义的比较函数
sort(r, r + i, cmp);
// 输出排序后的每条记录的原始行
for (int j = 0; j < i; j++) {
cout << r[j].line << endl;
}
}