#include<bits/stdc++.h>
using namespace std;
struct we{
string s;
int a,b,c;
int d;
}a[10000];
struct sw{
int a,b;
}as[100000];//用来存放是相当对手的序号
int main(){
int w,aq=0,i,r;
cin>>w;
sw zx;
for(i=0;i<w;i++){
cin>>a[i].s>>a[i].a>>a[i].b>>a[i].c;
a[i].d=a[i].a+a[i].b+a[i].c;
}//输入
for(i=0;i<w-1;i++){
for(r=i+1;r<w;r++){
if(fabs(a[i].a-a[r].a)<=5&&fabs(a[i].b-a[r].b)<=5
&&fabs(a[i].c-a[r].c)<=5&&fabs(a[i].d-a[r].d)<=10)
{
as[aq].a=i;as[aq].b=r;aq+=1;
}}}//选择排序来判断,并将序号存入另一个结构体
aq-=1;
for(i=0;i<aq;i++){
for(r=i+1;r<=aq;r++){
if(as[i].a>as[r].a){
zx=as[i];
as[i]=as[r];
as[r]=zx;
}//用选排根据字典顺序将存放序号的结构体进行排序
if(as[i].a==as[r].a&&as[i].b>as[r].b)
{
zx=as[i];
as[i]=as[r];
as[r]=zx;
}}}
for(i=0;i<=aq;i++){
cout<<a[as[i].a].s<<" "<<a[as[i].b].s<<endl;}//输出
return 0;
}