#include<iostream>
#include<string>
#include<algorithm>
#include<map>
using namespace std;
struct info
{
string name, pos;
long long attr;
int level, code;
} gang[115];
map <string, int> mappos = { {"HuFa", 4}, {"ZhangLao", 3}, {"TangZhu", 2}, {"JingYing", 1} };
bool cmp1(info i1, info i2)
{
if (i1.attr == i2.attr)
return i1.code < i2.code;
return i1.attr > i2.attr;
}
bool cmp2(info i1, info i2)
{
if (mappos[i1.pos] == mappos[i2.pos])
{
if (i1.level == i2.level)
return i1.code < i2.code;
return i1.level > i2.level;
}
return mappos[i1.pos] > mappos[i2.pos];
}
string str[38] = { "HuFa", "HuFa",
"ZhangLao", "ZhangLao", "ZhangLao", "ZhangLao",
"TangZhu", "TangZhu", "TangZhu", "TangZhu", "TangZhu", "TangZhu", "TangZhu",
"JingYing","JingYing", "JingYing", "JingYing", "JingYing",
"JingYing", "JingYing", "JingYing", "JingYing", "JingYing",
"JingYing", "JingYing", "JingYing", "JingYing", "JingYing",
"JingYing", "JingYing", "JingYing", "JingYing", "JingYing",
"JingYing", "JingYing", "JingYing", "JingYing", "JingYing" };
int main()
{
int n, p = 0;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> gang[i].name >> gang[i].pos >> gang[i].attr >> gang[i].level;
gang[i].code = i;
}
stable_sort(gang + 4, gang + n + 1, cmp1);
for (int i = 4; i <= n && p <= 37; i++, p++)
gang[i].pos = str[p];
stable_sort(gang + 4, gang + n + 1, cmp2);
for (int i = 1; i <= n; i++)
cout << gang[i].name << " " << gang[i].pos << " " << gang[i].level << endl;
}