var a,b,e:array[1..1000,1..1000]of longint;
c,d:array[1..1000]of longint;
n,m,i,j,q:longint;
begin
{assign(input,'match.in');
assign(output,'match.out');
reset(input); rewrite(output);}
read(n);
for i:=1 to n do for j:=1 to n do read(a[i,j]);
for i:=1 to n do
for j:=1 to n do
begin
read(b[i,j]); e[i,b[i,j]]:=n-j+1;
end;
fillchar(c,sizeof©,0); for i:=1 to n do inc(c[i]);
q:=1;
while q<>0 do
begin
fillchar(d,sizeof(d),0);
for i:=1 to n do begin if d[i]<>1 then break; q:=0; end;
for i:=1 to n do
if a[i,c[i]]
end;
for i:=1 to n do for j:=1 to n do write(e[i,j],' ');
end.
c,d:array[1..1000]of longint;
n,m,i,j,q:longint;
begin
{assign(input,'match.in');
assign(output,'match.out');
reset(input); rewrite(output);}
read(n);
for i:=1 to n do for j:=1 to n do read(a[i,j]);
for i:=1 to n do
for j:=1 to n do
begin
read(b[i,j]); e[i,b[i,j]]:=n-j+1;
end;
fillchar(c,sizeof©,0); for i:=1 to n do inc(c[i]);
q:=1;
while q<>0 do
begin
fillchar(d,sizeof(d),0);
for i:=1 to n do begin if d[i]<>1 then break; q:=0; end;
for i:=1 to n do
if a[i,c[i]]
end;
for i:=1 to n do for j:=1 to n do write(e[i,j],' ');
end.