#include<bits/stdc++.h>
using namespace std;
struct kkk{
string work;
int num;
}a[8];
struct kong{
string name,job;
int bang_gong,level;
int see;
};
bool tmp(kong a,kong b){
if(a.level!=b.level) return a.level>b.level;
return a.see<b.see;
}
bool tmpp(kong a,kong b){
if(a.bang_gong!=b.bang_gong) return a.bang_gong>b.bang_gong;
}
bool tmppp(kong a,kong b){
if(a.job==b.job) return a.level>b.level;
}
int main()
{
int n,people=1;
cin>>n;
kong *p=new kong[n+11];
a[1].work="BangZhu",a[1].num=1;
a[2].work="FuBangZhu",a[2].num=2;
a[3].work="HuFa",a[3].num=2;
a[4].work="ZhangLao",a[4].num=4;
a[5].work="TangZhu",a[5].num=7;
a[6].work="JingYing",a[6].num=25;
a[7].work="BangZhong",a[7].num=1e7;
for(int i=1;i<=n;i++){
cin>>p[i].name>>p[i].job>>p[i].bang_gong>>p[i].level;
p[i].see=i;
}
sort(p+1,p+n+1,tmp);
sort(p+4,p+n+1,tmpp);
for(int j=1;j<=7;j++){
for(int k=1;k<=a[j].num;k++){
p[people].job=a[j].work;
people++;
if(people>n) goto here;
}
}
here:{
sort(p+1,p+n+1,tmppp);
for(int i=1;i<=n;i++){
cout<<p[i].name<<' '<<p[i].job<<' '<<p[i].level<<endl;
}
}
delete[] p;
return 0;
}