#include <bits/stdc++.h>
using namespace std;
int n, a[16] = {}, sum = 0;
int u[16] = {};
int b[16][16] = {}, r[16] = {}, c[16] = {}, d1, d2;
int N, P;
bool go(int x, int y) {
  if (x == 0 && y == 3 && b[0][0] > b[0][1]) return false;
  if (x == n) {
    if (d1 == 0 && d2 == 0 && c[n - 1] == 0) {
      printf("%d\n", sum);
      for (int i = 0; i < n; i++, puts(""))
        for (int j = 0; j < n; j++) printf("%d ", b[i][j]);
      return true;
    }
    return false;
  }
  if (y == n - 1) {
    b[x][y] = r[x];
    int i = 0;
    for (i = 0; i < N; i++)
      if (!u[i] && r[x] == a[i]) break;
    if (i == N) return false;
    u[i] = 1;
    c[n - 1] -= a[i];
    if (x == y) d1 -= a[i];
    if (x + y == n - 1) d2 -= a[i];
    if (go(x + 1, 0)) return true;
    c[n - 1] += a[i];
    if (x == y) d1 += a[i];
    if (x + y == n - 1) d2 += a[i];
    u[i] = 0;
    b[x][y] = 0;
    return false;
  } else if (x == n - 1) {
    b[x][y] = c[y];
    int i = 0;
    for (i = 0; i < N; i++)
      if (!u[i] && c[y] == a[i]) break;
    if (i == N) return false;
    u[i] = 1;
    r[n - 1] -= a[i];
    if (x == y) d1 -= a[i];
    if (x + y == n - 1) d2 -= a[i];
    if (go(x, y + 1)) return true;
    r[n - 1] += a[i];
    if (x == y) d1 += a[i];
    if (x + y == n - 1) d2 += a[i];
    u[i] = 0;
    b[x][y] = 0;
    return false;
  }
  for (int i = 0; i < N; i++) {
    if (!u[i]) {
      int flg = 0;
      for (int j = 0; j < i; j++)
        if (!u[j] && a[j] == a[i]) flg = 1;
      if (flg) continue;
      b[x][y] = a[i];
      u[i] = 1;
      r[x] -= a[i];
      c[y] -= a[i];
      if (x == y) d1 -= a[i];
      if (x + y == n - 1) d2 -= a[i];
      if (go(x, y + 1)) return true;
      r[x] += a[i];
      c[y] += a[i];
      if (x == y) d1 += a[i];
      if (x + y == n - 1) d2 += a[i];
      u[i] = 0;
      b[x][y] = 0;
    }
  }
  b[x][y] = 0;
  return false;
}
int main(void) {
  scanf("%d", &n);
  for (int i = 0; i < n * n; i++) scanf("%d", &a[i]);
  for (int i = 0; i < n * n; i++) sum += a[i];
  sum /= n;
  sort(a, a + n * n);
  random_shuffle(a, a + n * n);
  N = n * n, P = (n - 1) * (n - 1);
  for (int i = 0; i < n; i++) r[i] = c[i] = sum;
  d1 = d2 = sum;
  go(0, 0);
  return 0;
}
