#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct jilu
{
char zj[20];
char qd[10];
char qt[10];
}px[10000];
int cmp1( const void *a , const void *b )
{
return strcmp((*(jilu *)a).qd , (*(jilu *)b).qd );
}
//这个是对结构体中字符串进行排序的
int cmp2(const void *a,const void *b)
{
return strcmp((*(jilu *)b).qt,(*(jilu *)a).qt);
}
int main()
{
int n,m;
int i;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
getchar();
for(i=0;i<m;i++)
scanf("%s %s %s",&px[i].zj,&px[i].qd,&px[i].qt);
qsort(px,m,sizeof(px[0]),cmp1);
printf("%s ",px[0].zj);
qsort(px,m,sizeof(px[0]),cmp2);
printf("%s\n",px[0].zj);
}
return 0;
}
#include<stdlib.h>
#include<string.h>
struct jilu
{
char zj[20];
char qd[10];
char qt[10];
}px[10000];
int cmp1( const void *a , const void *b )
{
return strcmp((*(jilu *)a).qd , (*(jilu *)b).qd );
}
//这个是对结构体中字符串进行排序的
int cmp2(const void *a,const void *b)
{
return strcmp((*(jilu *)b).qt,(*(jilu *)a).qt);
}
int main()
{
int n,m;
int i;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
getchar();
for(i=0;i<m;i++)
scanf("%s %s %s",&px[i].zj,&px[i].qd,&px[i].qt);
qsort(px,m,sizeof(px[0]),cmp1);
printf("%s ",px[0].zj);
qsort(px,m,sizeof(px[0]),cmp2);
printf("%s\n",px[0].zj);
}
return 0;
}