//#define LOCAL
#define INF 1000000000
#include<cstdio>
#include<cstring>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct infor
{
string name;
string zhiwei;
int money;
int level;
int turn;
}que[100000];
int change(string a){
if (a=="BangZhu") return 0;
if (a=="FuBangZhu") return 1;
if (a=="HuFa") return 2;
if (a=="ZhangLao") return 3;
if (a=="TangZhu") return 4;
if (a=="JingYing") return 5;
if (a=="BangZhong") return 6;
}
bool cmp1(infor x,infor y)
{
if (x.money==y.money) return x.turn<y.turn;
else return x.money>y.money;
}
/*
bool cmp2(infor x,infor y)
{
if (x.zhiwei==y.zhiwei)
return x.level>y.level;
else return change(x.zhiwei)<change(y.zhiwei);
}*/
bool cmp3(infor x,infor y)
{
if (x.zhiwei==y.zhiwei)
{
if (x.level==y.level) return x.turn<y.turn;
else return x.level>y.level;
}
else return change(x.zhiwei)<change(y.zhiwei);
}
int main()
{
int save=0;
int n;
cin>>n;
for (int i=1;i<=n;++i)
{
cin>>que[i].name>>que[i].zhiwei>>que[i].money>>que[i].level;
que[i].turn=i;
if ((save==0)and !( (que[i].zhiwei=="BangZhu")or(que[i].zhiwei=="FuBangZhu") ) ) save=i;
}
sort(que+save+1,que+n+1,cmp1);
for (int i=1;i<=n;i++)
{
if (i==1) que[i].zhiwei="BangZhu";
else if (i==2||i==3) que[i].zhiwei="FuBangZhu";
else if (i==4||i==5) que[i].zhiwei="HuFa";
else if (i>=6&&i<=9) que[i].zhiwei="ZhangLao";
else if (i>=10&&i<=16) que[i].zhiwei="TangZhu";
else if (i>=17&&i<=41) que[i].zhiwei="JingYing";
else que[i].zhiwei="BangZhong";
}
// sort(que+1,que+n+1,cmp2);
sort(que+save+1,que+n+1,cmp3);
for (int i=1;i<=n;++i)
cout<<que[i].name<<" "<<que[i].zhiwei<<" "<<que[i].level<<endl;
return 0;
}