def hamilton(N): if N%2==0: ans=[(0,0)] for i in range(N): rng=range(1,N) if i%2==1: rng=reversed(rng) for j in rng: ans.append((i,j)) for i in range(N-1,0,-1): ans.append((i,0)) return ans else: ans=[(0,0)] for i in range(N-2): rng=range(1,N) if i%2==1: rng=reversed(rng) for j in rng: ans.append((i,j)) ans.append((N-2,N-1)) for i in range(N-2,0,-1): if i%2==1: ans.append((N-2,i)) ans.append((N-1,i)) else: ans.append((N-1,i)) ans.append((N-2,i)) for i in range(N-1,0,-1): ans.append((i,0)) return ans T=int(input()) for _ in range(T): N=int(input()) A=[list(map(int,input().split())) for i in range(N)] hp=hamilton(N) if N%2==1: A[N-1][N-2]+=A[N-1][N-1] A[N-1][N-1]=0 cum=[0] for i,j in hp: cum.append((cum[-1]+A[i][j])%N) if cum[-1]!=0: print(-1) continue cum.pop() cnt=[[] for i in range(N)] sep=[] for i in range(len(cum)): cnt[cum[i]].append(i) for i in range(N): if len(cnt[i])>=N: sep=cnt[i][:N] ans=[[-1]*N for i in range(N)] sep=[0]+sep+[len(hp)] for i in range(N+1): for j in range(sep[i],sep[i+1]): ans[hp[j][0]][hp[j][1]]=i%N+1 if N%2==1: ans[N-1][N-1]=ans[N-1][N-2] for i in ans: print(*i)