#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
map<string,int> s;
struct BY{
string name;
string status;
int gx;
int dj;
int id;
};
bool cmp1(const BY &a, const BY &b) {
if (a.gx > b.gx) {
return true;
}
return false;
}
bool cmp2(const BY &a, const BY &b) {
if (s[a.status]<s[b.status]) {
return true;
}else if (a.status==b.status&&a.dj==b.dj&&a.id<b.id) {
return true;
}else if(a.status==b.status&&a.dj>b.dj){
return true;
}else{
return false;
}
}
int main(){
s["BangZhu"]=1;
s["FuBangZhu"]=2;
s["HuFa"]=3;
s["ZhangLao"]=4;
s["TangZhu"]=5;
s["Jingying"]=6;
s["BangZhong"]=7;
int n;
cin>>n;
vector<BY> by;
vector<BY> by1;
int m=0;
int m1=0;
while(n--){
BY t;
cin>>t.name>>t.status>>t.gx>>t.dj;
if(t.status=="BangZhu"||t.status=="FuBangZhu"){
t.id=m1++;
by1.push_back(t);
}else{
t.id=m++;
by.push_back(t);
}
}
int len=by.size();
sort(by.begin(),by.end(),cmp1);
for(int i=0;i<2&&i<len;i++){
by[i].status="HuFa";
}
for(int i=2;i<6&&i<len;i++){
by[i].status="ZhangLao";
}
for(int i=6;i<13&&i<len;i++){
by[i].status="TangZhu";
}
for(int i=13;i<38&&i<len;i++){
by[i].status="JingYing";
}
for(int i=38;i<len;i++){
by[i].status="BangZhong";
}
sort(by.begin(),by.end(),cmp2);
sort(by1.begin(),by1.end(),cmp2);
for(int i=0;i<m1;i++){
cout<<by1[i].name<<' '<<by1[i].status<<' '<<by1[i].dj<<endl;
}
for(int i=0;i<len;i++){
cout<<by[i].name<<' '<<by[i].status<<' '<<by[i].dj<<endl;
}
return 0;
}