#include<bits/stdc++.h>
using namespace std;
int n;
bool larger(int a, int b){
return a > b;
}
struct bangpai {
string name;
string zw;
int bg;
int dj;
int px;
int djpx;
int bgf = 0;
int djf = 0;
}a[160];
int bgl[160];
int fbz[3], hf[3], zl[5], tz[8], jy[26], bz[100];
void zwpx(bangpai a[], int n, int bgl[]) {
a[1].px = 1;
a[2].px = 2;
a[3].px = 3;
for (int i = 4; i <= n; i++) {
for (int k = 4; k <= n; k++) {
if (a[k].bg == bgl[i]&&a[k].bgf==0) {
a[k].bgf = 1;
a[k].px = i;
break;
}
}
}
}
void djpx(bangpai a[], int n, int s, int list[],int bgsx[]) {
for (int i = 1; i <= n; i++) {
for (int k = 1; k <= n; k++)
if (list[i] == a[bgsx[s+k-1]].dj&&a[bgsx[s+k-1]].djf==0) {
a[bgsx[s+k-1]].djf = 1;
a[bgsx[s+k-1]].djpx = s+i-1;
break;
}
}
}
int sx[120];
int bgsx[120];
int main() {
int cfbz = 1, czl = 1,chf = 1, ctz = 1, cjy = 1, cbz = 1;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i].name >> a[i].zw >> a[i].bg >> a[i].dj;
bgl[i] = a[i].bg;
}
sort(bgl + 4, bgl + 1 + n, larger);
zwpx(a, n, bgl);
for (int i = 1; i <= n; i++) {
if (a[i].px >= 2 && a[i].px <= 3)fbz[cfbz++] = a[i].dj;
else if (a[i].px >= 4 && a[i].px <= 5) {
a[i].zw = "HuFa";
hf[chf++] = a[i].dj;
}
else if (a[i].px >= 6 && a[i].px <= 9) {
a[i].zw = "ZhangLao";
zl[czl++] = a[i].dj;
}
else if (a[i].px >= 10 && a[i].px <= 16) {
a[i].zw = "TangZhu ";
tz[ctz++]= a[i].dj;
}
else if (a[i].px >= 17 && a[i].px <= 41) {
a[i].zw = "JingYing ";
jy[cjy++] = a[i].dj;;
}
else if (a[i].px > 41) {
a[i].zw = "BangZhong ";
bz[cbz++] = a[i].dj;
}
}
for (int i = 1; i <= n; i++) {
bgsx[a[i].px] = i;
}
sort(fbz+1, fbz + 3);
djpx(a, 2, 2, fbz,bgsx);
if (n >= 4 && n <= 5) {
sort(hf+1, hf +1+n-3, larger);
djpx(a, n-3, 4, hf, bgsx);
}
else if (n >= 6 && n <= 9) {
sort(hf+1, hf + 3, larger);
djpx(a, 2,4, hf, bgsx);
sort(zl+1, zl +1+n-5, larger);
djpx(a, n-5, 6, zl, bgsx);
}
else if (n >= 10 && n <= 16) {
sort(hf+1, hf + 3, larger);
djpx(a, 2, 4 , hf, bgsx);
sort(zl+1, zl + 5, larger);
djpx(a, 4, 6 , zl, bgsx);
sort(tz+1, tz +1+n- 9, larger);
djpx(a, n-9, 10, tz, bgsx);
}
else if (n <= 17 && n <= 41) {
sort(hf + 1, hf + 3, larger);
djpx(a, 2, 4, hf, bgsx);
sort(zl + 1, zl + 5, larger);
djpx(a, 4, 6, zl, bgsx);
sort(tz + 1, tz +8, larger);
djpx(a, 7, 10, tz, bgsx);
sort(jy+1, jy + 1+n-16, larger);
djpx(a, n-16, 17, jy, bgsx);
}
else if (n > 41) {
sort(hf + 1, hf + 3, larger);
djpx(a, 2, 4, hf, bgsx);
sort(zl + 1, zl + 5, larger);
djpx(a, 4, 6, zl, bgsx);
sort(tz + 1, tz + 8, larger);
djpx(a, 7, 10, tz, bgsx);
sort(jy + 1, jy +26, larger);
djpx(a, 25, 17, jy, bgsx);
sort(bz+1, bz + 1+n-41, larger);
djpx(a, n - 41, 42 , bz, bgsx);
}
a[1].djpx = 1;
for (int i = 1; i <= n; i++) {
sx[a[i].djpx] = i;
}
for (int i = 1; i <= n; i++) {
cout << a[sx[i]].name << " " << a[sx[i]].zw << " " << a[sx[i]].dj ;
if (i != n)cout << endl;
}
return 0;
}