#include <bits/stdc++.h>
using namespace std;
int i, j, k, l, n, m, a[18], t[18][18], s[18], f[18], tot;
int sum;
const int d[17][2] = {0, 0, 1, 1, 1, 2, 1, 3, 1, 4, 2, 1, 3, 1, 4, 1, 2,
                      2, 3, 3, 4, 4, 2, 3, 2, 4, 3, 4, 4, 3, 4, 2, 3, 2};
void print() {
  printf("%d\n", sum);
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= n; ++j) printf("%d%c", t[i][j], j == n ? '\n' : ' ');
  exit(0);
}
void renew(int x, int y, int k) {
  t[x][y] = k;
  s[x] += k;
  s[y + 4] += k;
  if (x == y) s[9] += k;
  if (x + y == n + 1) s[10] += k;
}
bool check(int l) {
  if (l == 5)
    if (s[1] != sum) return 1;
  if (l == 13)
    if (s[2] != sum) return 1;
  if (l == 17)
    if (s[3] != sum) return 1;
  if (l == 16)
    if (s[4] != sum) return 1;
  if (l == 8)
    if (s[5] != sum) return 1;
  if (l == 17)
    if (s[6] != sum) return 1;
  if (l == 15)
    if (s[7] != sum) return 1;
  if (l == 14)
    if (s[8] != sum) return 1;
  if (l == n + 7)
    if (s[9] != sum) return 1;
  if (n == 2 && l == 6)
    if (s[10] != sum) return 1;
  if (n == 3 && l == 9)
    if (s[10] != sum) return 1;
  if (n == 4 && l == 17)
    if (s[10] != sum) return 1;
  return 0;
}
void dfs(int l) {
  int i, x, y;
  if (check(l)) return;
  if (l == 17) print();
  x = d[l][0];
  y = d[l][1];
  if (x > n || y > n) {
    dfs(l + 1);
    return;
  }
  for (i = 1; i <= tot; ++i)
    if (f[i]) {
      f[i]--;
      renew(x, y, a[i]);
      dfs(l + 1);
      renew(x, y, -a[i]);
      f[i]++;
    }
}
int main() {
  scanf("%d", &n);
  sum = 0;
  for (i = 1; i <= n * n; ++i) scanf("%d", &a[i]), sum += a[i];
  sort(a + 1, a + n * n + 1);
  tot = 1;
  f[1] = 1;
  for (i = 2; i <= n * n; ++i)
    if (a[i] != a[tot])
      a[++tot] = a[i], f[tot] = 1;
    else
      f[tot]++;
  sum /= n;
  if (n < 2) s[2] = s[6] = sum;
  if (n < 3) s[3] = s[7] = sum;
  if (n < 4) s[4] = s[8] = sum;
  dfs(1);
}
