import java.util.Scanner;
import java.util.Arrays;
public class Main{
// [이해]
// 한번이라도 같은 반이었던 사람이 많은 사람을 반장으로 선출
// ex> 1번 학생, 2번 학생이랑 1,2,3,4,5 학년 같은 반 vs
// 3번학생, 4번이랑 4학년때 같은 반, 5번이랑 5학년 때 같은 반 (이러면 3번 학생 회장)
// [입력]
// n명 학생 (arr[n][6])
// 1~5학년때까지 몇 반이었는지 입력 (arr[1][1] arr[1][2]...arr[1][5],arr[2][1]...arr[2][5]...arr[n][1]...arr[n][5])
// [설계]
// for(i=1~N번 학생)
// for(j=1~5 학년 때)
// for(k=1~N번 학생중)
// student[i][j](i번 학생, j 학년) = student[k][j] (k번 학생,j 학년)학생이랑 반이 같으면
// check[i][k] i번 학생이랑 같은 학년이었다.(1)표시
// (예외) i==k인 경우는 건너뛴다.
// score[N+1] 배열(점수 기록)을 만든다.
//
// for(i=1~N번 학생)
// for(j=1~N번 학생)
//
// 학생의 점수를 score[i]에 갱신시켜준다
// i가 가장 높은 것을 출력한다.
public static int n;
public static int[][] student = new int[1020][6];
public static int[][] check = new int[1020][1020];
public static int[] score=new int[1020];
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
n = scan.nextInt();
inputMap(scan);
// printMap();
for(int i=1;i<=n;i++)
{
for(int j=1;j<=5;j++)
{
for(int k=1;k<=n;k++)
{
if(i==k)continue;
if(student[i][j]==student[k][j])check[i][k]=1;
}
}
}
for(int i=1;i<=n;i++)
{
int sum=0;
for(int j=1;j<=n;j++)
{
if(check[i][j]==1)sum+=1;
}
score[i]=sum;
}
int max=0;int maxIdx=0;
for(int i=1;i<=n;i++)
{
// System.out.print(score[i]+" ");
if(max<score[i]){max=score[i];maxIdx=i;}
}
// System.out.println();
System.out.println(maxIdx);
scan.close();
}
public static void printMap()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=5;j++)
{
System.out.print(student[i][j]+" ");
}System.out.println();
}
}
public static void inputMap(Scanner scan)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=5;j++)
{
student[i][j]=scan.nextInt();
}
}
}
}
알고리즘