#include <bits/stdc++.h>
using namespace std;
bool used[100];
long long sumh[100], sumv[100];
long long summain, sumnmain, s;
int a[100], b[100][100];
int num[100];
int c[100];
int sz;
int n;
bool check() {
  if (summain != s || sumnmain != s) {
    return 0;
  }
  for (int i = 0; i < n; i++) {
    if (sumh[i] != s || sumv[i] != s) return 0;
  }
  return 1;
}
void out() {
  cout << s << endl;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      cout << b[i][j] << " ";
    }
    cout << endl;
  }
}
void solve(int i, int j) {
  if (j == n) {
    if (sumh[i] != s) return;
    i++;
    j = 0;
  }
  if (i == n) {
    if (check()) {
      out();
      exit(0);
    }
  }
  for (int k = 0; k < sz; k++) {
    if (num[k] == 0) continue;
    num[k]--;
    a[k] = c[k];
    b[i][j] = a[k];
    if (i == j) summain += a[k];
    if (n - i - 1 == j) sumnmain += a[k];
    sumh[i] += a[k];
    sumv[j] += a[k];
    if ((i != n - 1 || (i == n - 1 && sumv[j] == s))) solve(i, j + 1);
    if (i == j) summain -= a[k];
    if (n - i - 1 == j) sumnmain -= a[k];
    sumh[i] -= a[k];
    sumv[j] -= a[k];
    num[k]++;
  }
}
int main(void) {
  scanf("%d ", &n);
  s = 0;
  for (int i = 0; i < n * n; i++) {
    scanf("%d ", &a[i]);
    s += a[i];
  }
  sort(a, a + n * n);
  sz = 1;
  num[0] = 1;
  c[0] = a[0];
  for (int i = 1; i < n * n; i++) {
    if (a[i] != a[i - 1]) {
      c[sz] = a[i];
      num[sz++] = 1;
    } else {
      num[sz - 1]++;
    }
  }
  s /= n;
  solve(0, 0);
}
