#include <bits/stdc++.h>
using namespace std;
int main() {
  long long z[500], x1[20], x[20], y[10][10], j, i, qq, p, n, f = 0, k, q, s,
                                                              s1, l;
  cin >> n;
  qq = n;
  n *= n;
  for (i = 1; i <= n; i++) cin >> x1[i];
  for (i = 1; i <= n; i++) x[i] = i;
  k = n;
m1:
  p = 0;
  l = 0;
  for (i = 1; i <= qq; i++)
    for (j = 1; j <= qq; j++) y[i][j] = x1[x[++p]];
  for (i = 1; i <= qq; i++) {
    s = 0;
    s1 = 0;
    for (j = 1; j <= qq; j++) {
      s += y[i][j];
      s1 += y[j][i];
    }
    z[++l] = s;
    z[++l] = s1;
  }
  p = qq;
  s = 0;
  s1 = 0;
  for (i = 1; i <= qq; i++) {
    s += y[i][i];
    s1 += y[i][p];
    p--;
  }
  z[++l] = s;
  z[++l] = s1;
  for (i = 1; i < l; i++)
    if (z[i] != z[i + 1]) goto s2;
  goto m3;
s2:
  q = 1;
  for (i = n; i >= 1; i--)
    if (x[q] == i)
      q++;
    else
      break;
  if (q == n + 1) goto m3;
  i = 1;
  while (x[i] != k) i++;
  q = i - 1;
  for (j = i; j <= n; j++) x[j] = 0;
  for (i = x[q] + 1; i <= n; i++) {
    for (j = 1; j <= n; j++)
      if (i == x[j]) goto m2;
    x[q] = i;
    break;
  m2:;
  }
  for (i = 1; i <= n; i++) {
    q = 0;
    for (j = 1; j <= n; j++)
      if (i == x[j]) {
        q = 1;
        break;
      }
    if (q == 0) {
      j = 1;
      while (x[j] != 0) j++;
      x[j] = i;
    }
  }
  i = 1;
  while (x[i] != k) i++;
  if (i == n || i == n - 1) {
    if (f > 0 && x[f + 1] == k) goto m4;
    goto m1;
  } else {
    k = x[n];
    f = i;
    goto m1;
  }
m4:
  f++;
  while (f > 0) {
    for (i = f; i < n; i++)
      if (x[i] > x[i + 1])
        ;
      else {
        k = x[f + 1];
        f = 0;
        goto m1;
      }
    f--;
  }
  goto m1;
m3:
  cout << z[1] << endl;
  for (i = 1; i <= qq; i++) {
    for (j = 1; j <= qq; j++) cout << y[i][j] << " ";
    cout << endl;
  }
  return 0;
}
