#include<iostream>
#include<algorithm>
using namespace std;
struct node {
string name, zhiwei;
int banggong, dengji;
} a[200], b[200], c[200];
istream &operator >> (istream &ist, node &a) {
cin >> a.name >> a.zhiwei >> a.banggong >> a.dengji;
return ist;
}
ostream &operator << (ostream &ost, const node &a) {
cout << a.name << ' '<< a.zhiwei << ' ' << a.dengji;
return ost;
}
inline bool cmp(const node &a, const node &b) {
return a.banggong >= b.banggong;
}
string sc[6] = {"BangZhu","FuBangZhu","HuFa","ZhangLao","TangZhu","JingYing"};
inline int fi(const node &a) {
for (int i = 0;; ++i) {
if (a.zhiwei == sc[i])
return i;
}
}
inline bool cmp1(const node &a, const node &b) {
if (a.zhiwei == b.zhiwei)
return a.dengji > b.dengji;
return fi(a) < fi(b);
}
inline int f(const node &g) {
for (int i = 0; ; ++i) {
if (a[i].name == g.name)
return i;
}
}
int main() {//B F H Z T J B
int n, p(0), s[4] = {2,4,7,25};
string s1[4] = {"HuFa","ZhangLao","TangZhu","JingYing"};
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> a[i];
c[i] = a[i];
if (a[i].name != "absi2011" && a[i].zhiwei != "BangZhu"
&& a[i].zhiwei != "FuBangZhu") {
b[p] = a[i];
++p;
}
}
sort(b, b + p, cmp);
int now(0);
for (int i = 0; i < n; ++i) {
if (a[i].zhiwei != "BangZhu" && a[i].zhiwei != "FuBangZhu") {
a[i] = b[now++];
}
}
for (int i = 3; i < n; ++i) {
if (a[i].zhiwei != "BangZhu" && a[i].zhiwei != "FuBangZhu") continue;
else {
bool flag(1);
for (int j = 0; j < 4; ++j) {
if (s[j]) {
a[i].zhiwei = s1[j];
--s[j];
flag = 0;
break;
}
}
if (flag)
a[i].zhiwei = "BangZhong";
}
}
// cout << endl;
// for (int i = 0; i < n; ++i)
// cout << a[i] <<endl;
// cout << endl;
for (int i = 0; i < n; ++i) {
c[i].zhiwei = a[f(c[i])].zhiwei;
}
stable_sort(c, c + n, cmp1);
for (int i = 0; i < n; ++i) {
cout << c[i] <<endl;
}
return 0;
}