#include <bits/stdc++.h>
using namespace std;
int mat[4][4], s_l[4], s_c[4], s_d[2];
bool used[16];
int a[16];
int n;
void rec(int x, int y, int left) {
  if (x == n) {
    x = 0;
    ++y;
  }
  if (y == n) {
    for (int i = 1; i < n; ++i)
      if (s_l[i] != s_l[i - 1]) return;
    for (int i = 1; i < n; ++i)
      if (s_c[i] != s_c[i - 1]) return;
    if (s_d[0] != s_d[1]) return;
    if (s_d[0] != s_l[0] || s_d[0] != s_c[0] || s_c[0] != s_l[0]) return;
    cout << s_d[0] << endl;
    for (int i = 0; i < n; ++i) {
      for (int j = 0; j < n; ++j) cout << mat[i][j] << " ";
      cout << endl;
    }
    exit(0);
  }
  for (int i = 0; i < n * n; ++i)
    if (!used[i]) {
      used[i] = true;
      s_l[y] += a[i];
      s_c[x] += a[i];
      if (x + y == n - 1) s_d[1] += a[i];
      if (x - y == 0) s_d[0] += a[i];
      mat[y][x] = a[i];
      rec(x + 1, y, left - a[i]);
      used[i] = false;
      s_l[y] -= a[i];
      s_c[x] -= a[i];
      if (x + y == n - 1) s_d[1] -= a[i];
      if (x - y == 0) s_d[0] -= a[i];
    }
}
void solve() {
  cin >> n;
  int s = 0;
  for (int i = 0; i < n * n; ++i) {
    cin >> a[i];
    s += a[i];
  }
  rec(0, 0, s);
}
int main() {
  solve();
  return 0;
}
