#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:200000000")
const double EPS = 1E-9;
const int INF = 1000000000;
const long long INF64 = (long long)1E18;
const double PI = 3.1415926535897932384626433832795;
int a[110], n, n2, s, b[10][10];
bool u[110];
bool check() {
  {
    int sum = 0;
    for (int i = 0; i < (int)(n); i++) sum += b[i][i];
    if (sum != s) return false;
  }
  return true;
}
bool bad_col(int x, int y) {
  if (x == 0) return false;
  int sum = 0;
  for (int i = 0; i < (int)(x + 1); i++) sum += b[i][y];
  if (x == n - 3)
    for (int i = 0; i < (int)(n2); i++)
      if (!u[i])
        for (int j = 0; j < (int)(i); j++)
          if (!u[j] && s - sum == a[i] + a[j]) return false;
  if (x == n - 2)
    for (int i = 0; i < (int)(n2); i++)
      if (!u[i] && s - sum == a[i]) return false;
  if (x < n - 3) return false;
  return true;
}
void rec(int x, int y) {
  if (x == n - 1 && y == 1) {
    int sum = 0;
    for (int i = 0; i < (int)(n); i++) sum += b[i][n - i - 1];
    if (sum != s) return;
  }
  if (x == n - 1 && y) {
    int sum = 0;
    for (int i = 0; i < (int)(n); i++) sum += b[i][y - 1];
    if (sum != s) return;
  }
  if (x < n - 1 && y)
    if (bad_col(x, y - 1)) return;
  if (x == n) {
    if (!check()) return;
    for (int i = 0; i < (int)(n); i++) {
      for (int j = 0; j < (int)(n); j++) printf("%d ", b[i][j]);
      puts("");
    }
    exit(0);
  }
  if (y == n) {
    int sum = 0;
    for (int i = 0; i < (int)(n); i++) sum += b[x][i];
    if (sum != s) return;
    return rec(x + 1, 0);
  }
  int last = INF;
  for (int i = 0; i < (int)(n2); i++)
    if (!u[i] && last != a[i]) {
      last = a[i];
      u[i] = true;
      b[x][y] = a[i];
      rec(x, y + 1);
      u[i] = false;
    }
}
int main() {
  cin >> n;
  n2 = n * n;
  for (int i = 0; i < (int)(n2); i++) cin >> a[i];
  sort(a, a + n2);
  for (int i = 0; i < (int)(n2); i++) s += a[i];
  s /= n;
  printf("%d\n", s);
  rec(0, 0);
  return 0;
}
