#include <stdio.h>
struct name ///结构体储存姓名和性别
{
char n[22];
char meal[10];
}name1[109];
int main()
{
int rs,jr,a1,i,c[110],temp,t1,j,t2;
double r1,r2,a[110],b[111],sum[110],t;
scanf("%d",&a1);
while(a1--)
{
scanf("%d %d",&rs,&jr);
t1=0;t2=0;
for(i=0;i<rs;i++) ////输入
{
scanf("%s",name1[i].n);
scanf("%s",name1[i].meal);
scanf("%lf %lf",&a[i],&b[i]);
getchar();
}
for(i=0;i<rs;i++) ///找出round1和round2中最大的
{
if(i==0)
{
r1=a[0];
r2=b[0];
}
if(a[i]>=r1)
r1=a[i];
if(b[i]>=r2)
r2=b[i];
}
for(i=0;i<rs;i++) // 计算出最终得分存在sum里
{
sum[i]=a[i]*(300/r1)*0.3+b[i]*(300/r2)*0.7;
c[i]=i;
}
for(i=0;i<rs;i++)
for(j=0;j<rs-1;j++)
{
if(sum[j]<=sum[j+1]) //按大小排序
{
t=sum[j+1];
sum[j+1]=sum[j];
sum[j]=t;
temp=c[j];
c[j]=c[j+1];
c[j+1]=temp;
}
}
for(i=0;i<jr;i++) //看选的人里有没有女的
if(name1[c[i]].meal[0]=='f')
t1=1;
for(i=0;i<rs;i++) //看总人里有没有女的
if(name1[i].meal[0]=='f')
t2=1;
if(t1==0&&t2==1) //如果选的人里没有女的且总人里有女的,就把女生排名最高的那个和选的人里最低的交换
{
for(i=jr;i<rs;i++)
{
if(name1[c[i]].meal[0]=='f')
{
temp=c[i];
c[i]=c[jr-1];
c[jr-1]=temp;
}
}
}
printf("The member list of Shandong team is as follows:\n"); //输出
for(i=0;i<jr;i++)
puts(name1[c[i]].n);
}
return 0;
}