/*
TASK: marriage
LANG: C++
*/
#include<stdio.h>
int N, A[100][100], B[100][100], used[100];

int ch(int q, int m)
{
 for(int i = 0; i<N; i++)
 if(q>B[i][m]) return 0;
 return 1;
}

void gen(int i)
{
 if(i>=N)return;

 int md = 0;
 
 for(int q = 1; q<N+1; q++)
 for(int j = 0; j<N; j++)
 if(((A[i][j]== q && ch(q, i)==0) || A[i][j] == 4) && !used[j])
 {
  md = j+1;
  used[j] = 1;
  if(md!=0)printf("%i %i\n", i+1, md);
  else printf("0\n");
  gen(i+1);
  return;
 }
}

int main()
{
 scanf("%i", &N);
 for(int i = 0; i<N; i++)
 for(int j = 0; j<N; j++)
 scanf("%i", &A[i][j]);
 for(int i = 0; i<N; i++)
 for(int j = 0; j<N; j++)
 scanf("%i", &B[i][j]);

 gen(0);
 return 0;
}
