//#include<stdio.h>
//long long int rev=0;
//void reverse(int n)
//{
// if(n==0)
// {
// return ;
// }
// rev=rev*10+n%10;
// reverse(n/10);
//}
//
//int main()
//{
// int n;
// scanf("%d",&n);
// reverse(n);
// printf("%lld",rev);
// return 0;
//}
/*
#include<stdio.h>
int fg(int n,int r)
{
if(r==0||n==r)
{
return 1;
}
else if(n<r)
{
return 0;
}
return fg(n-1,r-1)+fg(n-1,r);
}
int main()
{
int n,r;
scanf("%d %d",&n,&r);
printf("%d",fg(n,r));
return 0;
}
구조체 : 사용자 정의 자료형
내가 만드는 자료형
struct
학생 100명의 나이와 전화번호 를 관리
int age[100];
int tel[100];
typedef struct{
int age;
int tel;
}student;
*/
/*
#include <stdio.h>
typedef struct{
int age;
int tel;
char grade;
char name[10];
}student;
int main(){
student arr[100];
student temp;
temp = arr[0];
arr[0]=arr[10];
arr[10]=temp;
}
*/
//#include<stdio.h>
//typedef struct
//{
// char name[11];
// int grade;
//}inf;
//
//int main()
//{
// int i,j,k,n, m,max=0;
// inf arr[101]={};
// scanf("%d %d",&n,&m);
// for(i=1;i<=n;i++)
// {
// scanf("%s %d",arr[i].name,&arr[i].grade);
// }
// for(i=1;i<=m;i++)
// {
// max=0;
// for(j=1;j<=n;j++)
// {
// if(arr[j].grade>max)
// {
// max=arr[j].grade;
// k=j;
// }
//
// }
// printf("%s\n",arr[k].name);
// arr[k].grade=0;
// }
//
// return 0;
//}
#include<stdio.h>
typedef struct
{
char name[11];
int grade1;
int grade2;
int grade3;
}inf;
int main()
{
int n,i,j,max=0;
int k1,k2,k3;
inf arr[101];
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%s %d %d %d",arr[i].name,&arr[i].grade1,&arr[i].grade2,&arr[i].grade3);
}
for(i=1;i<=n;i++)
{
if(arr[i].grade1>max)
{
max=arr[i].grade1;
k1=i;
}
}
for(i=1;i<=n;i++)
{
max=0;
for(j=1;j<=n;j++)
{
if(arr[j].grade2>max)
{
max=arr[j].grade2;
k2=j;
}
}
if(k1==k2)
{
k2=i;
}
}
for(i=1;i<=n;i++)
{
max=0;
for(j=1;j<=n;j++)
{
if(arr[j].grade3>max)
{
max=arr[j].grade3;
k3=j;
}
}
if(k1==k3)
{
k3=i;
}
}
printf("%s %d %d",arr[k1].name,k2,k3);
return 0;
}