#include <bits/stdc++.h>
using namespace std;
int n;
int rt[16];
int s;
int f() {
  int r = 0;
  for (int i = 0; i < (n); ++i) {
    int qw = 0;
    for (int j = i * n; j < (i + 1) * n; ++j) {
      qw += rt[j];
    }
    r += abs(qw - s);
  }
  for (int i = 0; i < (n); ++i) {
    int qw = 0;
    for (int j = i; j < n * n; j += n) {
      qw += rt[j];
    }
    r += abs(qw - s);
  }
  {
    int qw = 0;
    for (int i = 0; i < n * n; i += n + 1) qw += rt[i];
    r += abs(qw - s);
  }
  int qw = 0;
  int j = 0;
  for (int i = n - 1; i < n * n; i += n - 1, ++j) {
    if (j == n) break;
    qw += rt[i];
  }
  r += abs(qw - s);
  return r;
}
void print() {
  cout << s << endl;
  for (int i = 0; i < (n * n); ++i) {
    cout << rt[i] << " ";
    if (i % n == n - 1) cout << endl;
  }
  exit(0);
}
int main() {
  cin >> n;
  s = 0;
  for (int i = 0; i < (n * n); ++i) {
    cin >> rt[i];
    s += rt[i];
  }
  s = s / n;
  for (;;) {
    random_shuffle(rt, rt + n * n);
    for (int i = 0; i < (5); ++i) {
      int q = f();
      if (q == 0) print();
      for (int i1 = 0; i1 < (n * n); ++i1) {
        for (int i2 = i1 + 1; i2 < n * n; ++i2) {
          swap(rt[i1], rt[i2]);
          int tr = f();
          if (tr >= q) {
            swap(rt[i1], rt[i2]);
          } else {
            q = tr;
          }
        }
      }
    l1:;
    }
  }
  return 0;
}
