//#include<stdio.h>
//
//double a;
//
//double ABS(double a)
//{
// if(a<0)
// {
// return (-1)*a;
// }
// if(a == 0)
// {
// return 0;
// }
//
// if(a>0)
// {
// return a;
// }
//}
//
//int main()
//{
// scanf("%lf", &a);
//
// printf("%.10g", ABS(a));
//}
//
//#include<stdio.h>
//
//int n, k;
//
//struct student
//{
// int score;
// int rank;
//};
//
//int main()
//{
// int i;
// int a=0;
// struct student st[201]= {0};
//
// scanf("%d", &n);
// for(i=1 ; i<=n; i++)
// {
// scanf("%d", &st[i].score);
// }
//
// for(i=1; i<=n; i++)
// {
// for(k=1; k<=n; k++)
// {
// if(st[i].score < st[k].score)
// {
// a++ ;
// }
// }
// printf("%d %d",st[i].score, a+1);
// printf("\n");
//
// a = 0;
// }
//}
#include<stdio.h>
struct ap
{
int cn;
int st;
int score;
};
int main()
{
int i, d, n, a;
int max,mi;
struct ap s[1000] = {};
scanf("%d", &n);
for(i=1; i<=n; i++)
{
scanf("%d %d %d", &s[i].cn, &s[i].st, &s[i].score);
}
for(i=1; i<=3; i++)
{
max = 0;
for(d=1; d<=n; d++)
{
if(s[d].score > max)
{
max = s[d].score;
mi=d;
}
}
printf("%d %d\n", s[mi].cn, s[mi].st);
s[mi].score = 0;
}
return 0;
}



