#include<stdio.h>
int main()
{
int n,i,j,flag=0;
int col[6]={0},z,max,min;
int a[6][6]={0};
int k;
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
//输入 二维数组a[][]
for(i=0;i<n;i++)//对二维数组的行循环a[i][]
{
max=a[i][0];//令第i列的第一个数是最大值,与后面的数作比较
for(j=0;j<n;j++) //a[][j]
{
if(max<a[i][j])//判断最大值是否小于行中的一个数
{
max=a[i][j];//赋值,通过循环得到最大值
}
}
for(z=0,k=0;z<n;z++)//一行可能会出现多个最大值,1 7 7 1
{
if(a[i][z]==max)//第i行不变,得到这一列中有几个最大值
{
col[k]=z;//用col一维数组储存最大值出现在第几列,下标k的自加放在后面,col[0] ;col[1]
k++;//表示有几个最大值 k=1; k=2;
}
}
min=max;//在一列中最小值等于最大值
for(j=0;j<k;j++)//通过循环获取col中的最大值列数
{
for(z=0;z<n;z++)//行数在循环
{
if(min>a[z][col[j]])//行数在动;列数不动
{
break;//被赋值等于最小值不是真正的最小值,就退出循环
}
}
if(z==n)//当z循环满n的时候,min是真正的最小值
{
printf("%d %d\n",i,col[j]);//输出
flag++;
}
}
}
if(flag==0)//两个输出只会存在一个所以有flag
{
printf("NONE\n");
}
return 0;
}