#include <bits/stdc++.h>
using namespace std;
const int Maxn = 20;
const int Maxmask = (1 << 16);
int out[Maxn][Maxn];
bool making[Maxn][Maxmask];
int n;
int s;
int a[Maxn * Maxn];
int mod;
void input() {
  cin >> n;
  for (int i = 0; i < n * n; i++) {
    cin >> a[i];
    s += a[i];
  }
  s /= n;
}
void place() {
  for (int i = 0; i < n * n; i++) out[i / n][i % n] = a[i];
}
bool is_true() {
  int t;
  for (int i = 0; i < n; i++) {
    t = 0;
    for (int j = 0; j < n; j++) t += out[i][j];
    if (t != s) return false;
    t = 0;
    for (int j = 0; j < n; j++) t += out[j][i];
    if (t != s) return false;
  }
  t = 0;
  for (int i = 0; i < n; i++) t += out[i][i];
  if (t != s) return false;
  t = 0;
  for (int i = 0; i < n; i++) t += out[i][n - i - 1];
  if (t != s) return false;
  return true;
}
bool found() {
  int b[] = {2, 7, 6, 9, 5, 1, 4, 3, 8};
  for (int i = 0; i < n * n; i++)
    if (a[i] != b[i]) return false;
  return true;
}
void calc_3() {
  sort(a, a + n * n);
  while (1) {
    place();
    if (is_true()) break;
    next_permutation(a, a + (n * n));
  }
}
void output() {
  cout << s << "\n";
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) cout << out[i][j] << " ";
    cout << "\n";
  }
}
int main() {
  input();
  calc_3();
  output();
  return 0;
}
