#include<bits/stdc++.h>
using namespace std;
typedef struct{
string Name;//姓名
string Posts;//职位
int Contribute, Range, ex;//贡献,等级,经验
}Menber;
string i_to_s(int n){//数到字符串的转换
if(n == 0) return "BangZhu";
if(n <= 2) return "FuBangZhu";
if(n <= 4) return "HuFa";
if(n <= 8) return "ZhangLao";
if(n <= 15) return "Tangzhu";
if(n <= 40) return "JingYing";
return "BangZhong";
}
int s_to_i(string s){//字符串到数的转化
if(s == "BangZhu") return 0;
if(s == "FuBangZhu") return 1;
if(s == "HuFa") return 2;
if(s == "zhangLao") return 3;
if(s == "TangZhu") return 4;
if(s == "JingYing") return 5;
return 6;
}
bool cmp1(Menber A, Menber B){
if(A.Contribute != B.Contribute) return A.Contribute>B.Contribute;
return A.ex < B.ex;
}
bool cmp2(Menber A, Menber B){
int A1 = s_to_i(A.Posts),B1 = s_to_i(B.Posts);//将职位转换为数字,来进行操作
if(A1 != B1) return A1 < B1;
if(A.Range != B.Range) return A.Range > B.Range;
return A.ex < B.ex;
}
int main(void){
Menber menbers[120];
int Num_menbers;
cin >> Num_menbers;
//输入
for(int i =0; i < Num_menbers; i ++){
menbers[i].ex = i;
cin >> menbers[i].Name >> menbers[i].Posts >> menbers[i].Contribute >> menbers[i].Range;
}
//处理
sort(menbers+3,menbers+Num_menbers,cmp1);//第一遍排序
for(int i = 0; i<Num_menbers; i ++){//赋予职位
menbers[i].Posts = i_to_s(i);
}
sort(menbers,menbers+Num_menbers,cmp2);//第二遍排序
//输出
for(int i = 0; i < Num_menbers; i ++){
cout << menbers[i].Name << ' ' << menbers[i].Posts << ' '
<< menbers[i].Range;
cout << endl;
}
return 0;
}