#include <bits/stdc++.h>
using namespace std;
static const int INF = 1000000000;
template <class T>
void debug(T a, T b) {
  for (; a != b; ++a) cerr << *a << ' ';
  cerr << endl;
}
int n;
int num[20];
int buf[20], ans[20];
int seq[12][5];
pair<int, int> kind[20];
int sum;
int m;
int cnt = 0;
int dfs(int dep) {
  if (dep == n * n) {
    memcpy(ans, buf, sizeof(ans));
    return 1;
  }
  pair<int, int>* tmp;
  for (int i = 0; i < m; ++i)
    if (kind[i].second > 0) {
      int failed = 0;
      buf[dep] = kind[i].first;
      for (int j = 0; j < cnt; ++j)
        if (seq[j][n - 2] == dep) {
          int rest = sum;
          for (int k = 0; k < n - 1; ++k) rest -= buf[seq[j][k]];
          tmp = lower_bound(kind, kind + m, make_pair(rest, -1));
          if (tmp->first == rest && tmp->second > 0) {
            ;
          } else {
            failed = 1;
            break;
          }
        }
      if (!failed) {
        for (int j = 0; j < cnt; ++j)
          if (seq[j][n - 1] == dep) {
            int cur = 0;
            for (int k = 0; k < n; ++k) cur += buf[seq[j][k]];
            if (cur != sum) {
              failed = 1;
              break;
            }
          }
      }
      if (failed) {
        buf[dep] = -INF;
        continue;
      }
      --kind[i].second;
      if (dfs(dep + 1)) return 1;
      buf[dep] = -INF;
      ++kind[i].second;
    }
  return 0;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n * n; ++i) scanf("%d", &num[i]);
  if (n == 1) {
    printf("%d\n%d\n", num[0], num[0]);
    return 0;
  }
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) seq[cnt][j] = i * n + j;
    ++cnt;
  }
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) seq[cnt][j] = j * n + i;
    ++cnt;
  }
  for (int i = 0; i < n; ++i) seq[cnt][i] = i * n + i;
  ++cnt;
  for (int i = 0; i < n; ++i) seq[cnt][i] = i * n + n - 1 - i;
  ++cnt;
  memset(buf, -1, sizeof(buf));
  sort(num, num + n * n);
  sum = accumulate(num, num + n * n, 0) / n;
  m = 0;
  for (int i = 0; i < n * n; ++i) {
    int j = i;
    while (j < n * n && num[j] == num[i]) ++j;
    kind[m++] = make_pair(num[i], j - i);
    i = j - 1;
  }
  dfs(0);
  printf("%d\n", sum);
  for (int i = 0; i < n * n; ++i)
    printf("%d%c", ans[i], i % n == n - 1 ? '\n' : ' ');
  return 0;
}
