#include<bits/stdc++.h>
using namespace std;
int n;
struct A{
char id[30];
char job[50];
int contribution;
int level;
int flag;
}a[115];
//按帮贡排序
bool cmp(const A& a, const A& b)
{
if (a.contribution != b.contribution)
{
if (a.contribution > b.contribution)
return true;
else
return false;
}
else
return 0;
}
//按职位为第一关键词和等级为第二关键词排序
bool cmp2(const A& a, const A& b)
{
if (a.flag!=b.flag)
{
if (a.flag < b.flag)
return true;
else
return false;
}
else
{
if(a.level>b.level)
return true;
else
return false;
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i].id>>a[i].job>>a[i].contribution>>a[i].level;
}
sort(a,a+n,cmp);//帮贡排序
int hu=2,zhang=4,tang=7,jing=25;
for(int i=0;i<n;i++)
{
if(strcmp(a[i].job,"BangZhu")==0||strcmp(a[i].job,"FuBangZhu")==0)
{
if(strcmp(a[i].job,"BangZhu")==0) a[i].flag=1;
if(strcmp(a[i].job,"FuBangZhu")==0) a[i].flag=2;
continue;
}
if(hu!=0)
{
const char str[]="HuFa";
strcpy(a[i].job,str);
a[i].flag=3;
hu--;
continue;
}
if(zhang!=0)
{
const char str[]="ZhangLao";
strcpy(a[i].job,str);
a[i].flag=4;
zhang--;
continue;
}
if(tang!=0)
{
const char str[]="TangZhu";
strcpy(a[i].job,str);
a[i].flag=5;
tang--;
continue;
}
if(jing!=0)
{
const char str[]="JingYing";
strcpy(a[i].job,str);
a[i].flag=6;
jing--;
continue;
}
const char str[]="BangZhong";
strcpy(a[i].job,str);
}
//再次排序
sort(a,a+n,cmp2);
for(int i=0;i<n;i++)
{
cout<<a[i].id<<" "<<a[i].job<<" "<<a[i].level<<endl;
}
return 0;
}