/*
#include <stdio.h>
int main()
{
int i,a,b,c,d,n,money,high=0,money_high=0;
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%d %d %d %d",&a,&b,&c,&d);
if(a==b&&a==c&&a==d)
{
money=50000+a*5000;
}
else if((a==b&&a==c)||(a==b&&a==d)||(a==c&&a==d))
{
money=10000+a*1000;
}
else if(b==c&&b==d)
{
money=10000+b*1000;
}
else if(a==b&&c==d || a==c&&b==d || a==d&&b==c)
{
money=2000;
if(a==b) money+=(a+c)*500;
else money+=(a+b)*500;
}
else if(a==b||a==c||a==d)
{
money=1000+a*100;
}
else if(b==c||c==d)
{
money=1000+c*100;
}
else if(b==d)
{
money=1000+b*100;
}
else
{
high=(a>b ? a:b) > (c>d ? c:d) ? (a>b ? a:b) : (c>d ? c:d);
money=high*100;
}
if(money_high<money)
{
money_high=money;
}
}
printf("%d",money_high);
return 0;
}
*/
#include <stdio.h>
typedef struct
{
int c, n, g;
} student;
int main()
{
int i,j,n,memo=0,high=0,contry[3]={},k,l,count=0;
int a, b;
student st[101]={};
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%d %d %d",&st[i].c,&st[i].n,&st[i].g);
}
for(j=0; j<2; j++)
{
for(i=0; i<n; i++)
{
if(st[i].n>st[high].n) high=i;
}
if(j==0) a=st[high].c;
if(j==1) b=st[high].c;
printf("%d %d\n",st[high].c,st[high].n);
st[high].n-=2000000000;
}
if(a==b)
{
for(i=0; i<n; i++)
{
if(st[i].c==a) st[i].n=0;
}
}
for(i=0; i<n; i++)
{
if(st[i].n>st[high].n) high=i;
}
printf("%d %d\n",st[high].c,st[high].n);
return 0;
}