/*
TASK:marriage
LANG:C++
*/

#include <iostream>
using namespace std;

int N;
int M[101][101];
int D[101][101];
int R[101][2];

void Read();
void Solve();
void Couple(int i);
void Out();

int main()
{
 Read();
 Solve();
 Out();

 return 0;
}

void Read()
{
 cin>>N;

 int i,j;
 for(i=1;i<=N;i++) for(j=1;j<=N;j++) cin>>M[i][j];
 for(i=1;i<=N;i++) for(j=1;j<=N;j++) cin>>D[i][j];
}

void Solve()
{
 int i,j;

 for(i=1;i<=N;i++)
  Couple(i);
}

void Couple(int i)
{
 int j;
 
 for(j=N;j>0;j--) if(!D[M[i][j]][0]) {D[M[i][j]][0]=1; R[i][1]=M[i][j]; return;}
}

void Out()
{
 int i;
 for(i=1;i<=N;i++) cout<<i<<' '<<R[i][1]<<endl;
}

