#include<bits/stdc++.h>
#define maxn 10000
using namespace std;
const string w[7]= { "BangZhu", "FuBangZhu", "HuFa", "ZhangLao", "TangZhu", "JingYing", "BangZhong" };
class player {
public:
string name,zhiwei;
unsigned long long banggong=0;
int dengji,paiming;
};
int n=0,deng,paiming,count=1,playernum,newzhiwei;
unsigned long long bang;
string name,zhi;
priority_queue<unsigned long long,vector<unsigned long long>,less<unsigned long long>> banggongque;
priority_queue<int,vector<int>,less<int>> dengjique;
vector<int> finallist;
vector<int>::iterator finallistit;
vector<int> banggonglist;
vector<int> dengjilist;
multimap<unsigned long long,int>findplafrombanggong;
multimap<unsigned long long,int>::iterator banggongit;
multimap<int,int>findplafromdengji;
multimap<int,int>dengjiit;
player pla[maxn];
int newzhi(int x) {
int ans=0;
if(x<=4) {
ans=2;
} else if(x<=8) {
ans=3;
} else if(x<=15) {
ans=4;
} else if(x<=40) {
ans=5;
} else {
ans=6;
}
return ans;
}
void caozuo() {
for(vector<int>::iterator it=finallist.begin(); it!=finallist.end(); it++) {
int deng1,cou=1;
const int x=finallist.size();
deng1=pla[*it].dengji;
vector<int>::iterator it2;
vector<int>::iterator it3;
it3=it;
it2=finallist.end();
it2--;
if(deng>deng1) {
finallist.insert(it,playernum);
break;
} else if(deng==deng1) {
biaoji:
if(paiming<pla[*it3].paiming) {
finallist.insert(it,playernum);
break;
} else {
it3++;
goto biaoji;
}
} else {
// cout<<x<<endl;
if(cou==x) {
finallist.push_back(playernum);
break;
}
}
cou++;
}
}
int main() {
cin>>n;
for(int i=0; i<n; i++) {
cin>>name>>zhi>>bang>>deng;
pla[i].name=name;
pla[i].zhiwei=zhi;
pla[i].banggong=bang;
pla[i].dengji=deng;
pla[i].paiming=i;
if(i>=3) {
findplafrombanggong.insert(pair<unsigned long long,int>(bang,i));
banggongque.push(bang);
}
}
for(int i=0; i<3; i++) {
name=pla[i].name;
zhi=pla[i].zhiwei;
bang=pla[i].banggong;
deng=pla[i].dengji;
cout<<name<<" "<<zhi<<" "<<deng<<endl;
}
for(int i=3; i<n; i++) {
bang=banggongque.top();
banggongit=findplafrombanggong.find(bang);
playernum=banggongit->second;
deng=pla[playernum].dengji;
paiming=pla[playernum].paiming;
newzhiwei=newzhi(i);
pla[playernum].zhiwei=w[newzhiwei];
if(finallist.empty()) {
finallist.push_back(playernum);
} else {
caozuo();
}
if(i==4 or i==8 or i==15 or i==40 or i==n-1) {
for(vector<int>::iterator it=finallist.begin(); it!=finallist.end(); it++) {
name=pla[*it].name;
zhi=pla[*it].zhiwei;
deng=pla[*it].dengji;
cout<<name<<" "<<zhi<<" "<<deng<<endl;
}
finallist.clear();
}
findplafrombanggong.erase(banggongit);
banggongque.pop();
}
return 0;
}