#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
using ll = long long;
using ld = long double;
#define all(x) x.begin(),x.end()
#define v(x) vector<x>
#define nl '\n'
#define fxd(x) fixed << setprecision(x)
template<class t> using ordered_set = tree<t, null_type, less<t>, rb_tree_tag, tree_order_statistics_node_update>;
template<class t> using ordered_multiset = tree<t, null_type, less_equal<t>, rb_tree_tag, tree_order_statistics_node_update>;
struct item
{
ll val;
ll w;
string type;
ll date;
string name;
};
bool cmp(const item& a, const item& b)
{
if(a.val == b.val)
{
if(a.w == b.w)
{
if(a.type == b.type)
{
if(a.date == b.date)
{
return a.name < b.name;
}
else
{
return a.date < b.date;
}
}
else
{
return a.type < b.type;
}
}
else
{
return a.w < b.w;
}
}
else
{
return a.val < b.val;
}
}
int main()
{
ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
int n; cin >> n;
vector<item> arr(n);
for (int i = 0; i < n; i++)
{
cin >> arr[i].val >> arr[i].w >> arr[i].type >> arr[i].date >> arr[i].name;
}
sort(arr.begin(),arr.end(),cmp);
for (int i = 0; i < n; i++)
{
cout << arr[i].val << " " << arr[i].w << " " << arr[i].type << " " << arr[i].date << " " << arr[i].name << nl;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsKdXNpbmcgbGwgPSBsb25nIGxvbmc7CnVzaW5nIGxkID0gbG9uZyBkb3VibGU7CgojZGVmaW5lIGFsbCh4KSAgeC5iZWdpbigpLHguZW5kKCkKI2RlZmluZSB2KHgpIHZlY3Rvcjx4PgojZGVmaW5lIG5sICdcbicKI2RlZmluZSBmeGQoeCkgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKHgpCnRlbXBsYXRlPGNsYXNzIHQ+IHVzaW5nIG9yZGVyZWRfc2V0ID0gdHJlZTx0LCBudWxsX3R5cGUsIGxlc3M8dD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+Owp0ZW1wbGF0ZTxjbGFzcyB0PiB1c2luZyBvcmRlcmVkX211bHRpc2V0ID0gdHJlZTx0LCBudWxsX3R5cGUsIGxlc3NfZXF1YWw8dD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+OwoKc3RydWN0IGl0ZW0KewogICAgbGwgdmFsOwogICAgbGwgdzsKICAgIHN0cmluZyB0eXBlOwogICAgbGwgZGF0ZTsKICAgIHN0cmluZyBuYW1lOwp9OwoKYm9vbCBjbXAoY29uc3QgaXRlbSYgYSwgY29uc3QgaXRlbSYgYikKewogICAgaWYoYS52YWwgPT0gYi52YWwpCiAgICB7CiAgICAgICAgaWYoYS53ID09IGIudykKICAgICAgICB7CiAgICAgICAgICAgIGlmKGEudHlwZSA9PSBiLnR5cGUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKGEuZGF0ZSA9PSBiLmRhdGUpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEubmFtZSA8IGIubmFtZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5kYXRlIDwgYi5kYXRlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIGEudHlwZSA8IGIudHlwZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gYS53IDwgYi53OwogICAgICAgIH0KICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICByZXR1cm4gYS52YWwgPCBiLnZhbDsKICAgIH0KfQoKCmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUobnVsbHB0cik7IGNvdXQudGllKG51bGxwdHIpOwogICAgaW50IG47IGNpbiA+PiBuOwogICAgdmVjdG9yPGl0ZW0+IGFycihuKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQogICAgewogICAgICAgIGNpbiA+PiBhcnJbaV0udmFsID4+IGFycltpXS53ID4+IGFycltpXS50eXBlID4+IGFycltpXS5kYXRlID4+IGFycltpXS5uYW1lOwogICAgfQoKICAgIHNvcnQoYXJyLmJlZ2luKCksYXJyLmVuZCgpLGNtcCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgIHsKICAgICAgICBjb3V0IDw8IGFycltpXS52YWwgPDwgIiAiIDw8IGFycltpXS53IDw8ICIgIiA8PCBhcnJbaV0udHlwZSA8PCAiICIgPDwgYXJyW2ldLmRhdGUgPDwgIiAiIDw8IGFycltpXS5uYW1lIDw8IG5sOwogICAgfQogICAgCn0=