#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void setmax(T &a, T b) {
  if (b > a) a = b;
}
template <class T>
inline void setmin(T &a, T b) {
  if (b < a) a = b;
}
int a[20], n;
vector<int> p;
inline int get(int i, int j) { return a[p[i * n + j]]; }
int value;
bool check() {
  int s = 0, val = 0;
  for (int i = 0; i < n; i++) {
    val += get(i, i);
    s += get(n - 1 - i, i);
  }
  if (val != s) return false;
  for (int i = 0; i < n; i++) {
    int s1 = 0, s2 = 0;
    for (int j = 0; j < n; j++) {
      s1 += get(i, j);
      s2 += get(j, i);
    }
    if (s1 != val || s2 != val) return false;
  }
  value = val;
  return true;
}
int main(void) {
  cin >> n;
  for (int i = 0; i < n * n; i++) cin >> a[i];
  p.resize(n * n);
  for (int i = 0; i < n * n; i++) p[i] = i;
  do {
    if (check()) {
      cout << value << endl;
      for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
          cout << get(i, j) << (j < n - 1 ? ' ' : '\n');
        }
      }
      return 0;
    }
  } while (next_permutation(p.begin(), p.end()));
  assert(0);
  return 0;
}
