/*
TASK:marriage
LANG:C++
*/
#include <iostream>
using namespace std;

int N,M[101][101],used[101][101],usedM[101],c=0,y;

void Find()
{

     for(int p=N;p>=1;p--)
      for(int i=1;i<=N;i++)
	for(int j=1;j<=N;j++)
		 if( (M[i][j]==p)&&(!used[p][j])&&(!usedM[i]) )
		 {
		      cout<<i<<" "<<j<<"\n";
		      used[N][j]=1;
		      usedM[i]=1;
		      c++;
		      if(c==N) return;
		 }
}

void Clean()
{
     for(int i=1;i<=N;i++)
	for(int j=1;j<=N;j++)
	      { used[i][j]=0; usedM[i]=0; }
}

int main()
{
    cin>>N;
    for(int i=1;i<=N;i++)
      for(int j=1;j<=N;j++)
	 cin>>M[i][j];
    for(int g=1;g<=N;g++)
      for(int j=1;j<=N;j++) cin>>y;
    Clean();
    Find();
    return 0;
}
