import itertools N = int(input()) A = [list(map(int, input().split())) for _ in range(N)] yes = "Yes" no = "No" def nasu(N, A): M = N * N R = [{}, {}] for D in itertools.permutations(range(M), M): t = 0 n = 0 v = 0 for d in D: p, q = divmod(n, N) if (p % 2) == (q % 2): if d % 2: t = 1 - t v += d * A[n] n += 1 if v in R[t]: return yes, R[t][v], D else: R[t][v] = D return no, [], [] if N >= 4: x = 1 / 0 else: A2 = [] for a in A: A2.extend(a) ans, x, y = nasu(N, A2) print(ans) if ans == no: exit() for i in range(N): print(*x[i * N: (i + 1) * N]) for i in range(N): print(*y[i * N: (i + 1) * N])