#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int n, num1, num2, num3, num4, num5, num6;
int num[7] = {1, 2, 2, 4, 7, 25, 80};
struct association {
long long num, count, level;
char name[35], position[35];
} as[200 + 1];
int cmp(const void *a, const void *b) {
struct association *pa = (struct association *)a, *pb = (struct association *)b;
if (pa->count > pb->count) return -1;
if (pa->count < pb->count) return 1;
if (pa->num < pb->num) return -1;
if (pa->num > pb->num) return 1;
}
int cmp_next(const void *a, const void *b) {
struct association *pa = (struct association *)a, *pb = (struct association *)b;
if (pa->level > pb->level) return -1;
if (pa->level < pb->level) return 1;
if (pa->num < pb->num) return -1;
return 1;
}
void set(int i) {
if (num1 < 1) {
num1++;
strcpy(as[i].position, " BangZhu ");
return ;
}
if (num2 < 2) {
num2++;
strcpy(as[i].position, " FuBangZhu ");
return ;
}
if (num3 < 2) {
num3++;
strcpy(as[i].position, " HuFa ");
return ;
}
if (num4 < 4) {
num4++;
strcpy(as[i].position, " ZhangLao ");
return ;
}
if (num5 < 7) {
num5++;
strcpy(as[i].position, " TangZhu ");
return ;
}
if (num6 < 7) {
num6++;
strcpy(as[i].position, " JingYing ");
return ;
}
strcpy(as[i].position, " BangZhong ");
return ;
}
int main() {
int i, j;
scanf("%d", &n);
for (i = 1; i <= 200; i++) as[i].count = -1;
for (i = 1; i <= n; i++) {
scanf("%s %s %lld %lld", as[i].name, as[i].position, &as[i].count, &as[i].level);
as[i].num = i;
}
qsort(as + 4, n - 3, sizeof(struct association), cmp);
for (i = 1; i <= n; i++) set(i);
for (i = 4, j = 1; i <= n; i += num[j]) {//第二次排序有问题
qsort(as + i, num[++j], sizeof(struct association), cmp_next);
}
// printf("%d\n",num[j]);
for (i = 1; i <= n; i++) {
printf("%s", as[i].name);
printf("%s", as[i].position);
// printf("%d ",as[i].num);
printf("%lld\n", as[i].level);
}
return 0;
}