T=int(input()) for _ in range(T): N=int(input()) R=list(map(int,input().split())) C=list(map(int,input().split())) if N==1: print(1) continue if N==2: print(-1) continue ans=[] for i in range(N): chk=[R[i]]*N ans.append(chk) #ここまで横の条件を求めるグリッドの仮作成 if len(set(C))==1: #Cの数字が全部同じ時を考える if N<=4: print(-1) continue watacco=[] for i in range(N): if R[i]!=C[0]: watacco.append(i) for j in range(N): i=watacco[j%(N-1)] ans[i][j]=C[j] else: popocco=[k for k in range(N)] for l in range(N-1): if R[popocco[l]]==C[l]: popocco[l],popocco[l+1]=popocco[l+1],popocco[l] if R[popocco[N-1]]==C[N-1]: #最後の列で同じになっちゃうとき for m in range(N-1): if C[m]!=C[N-1]: popocco[m],popocco[N-1]=popocco[N-1],popocco[m] break for y in range(N): x=popocco[y] ans[x][y]=C[y] for i in range(N): print(*ans[i])