#include <bits/stdc++.h>
using namespace std;
long long n, avg, a[10];
vector<vector<long long> > ans;
bool check() {
  long long sum;
  for (int i = 0; i < n; i++) {
    sum = 0;
    for (int j = 0; j < n; j++) sum += ans[j][i];
    if (sum != avg) return false;
  }
  sum = 0;
  for (int i = 0; i < n; i++) sum += ans[i][i];
  if (sum != avg) return false;
  sum = 0;
  for (int i = 0; i < n; i++) sum += ans[i][(n - 1) - i];
  if (sum != avg)
    return false;
  else
    return true;
}
bool b = false;
void solve(int x) {
  if (b) return;
  if (x == n) {
    if (check()) {
      b = true;
      for (int i = 0; i < n; i++, cout << endl)
        for (int j = 0; j < n; j++) cout << ans[i][j] << " ";
    }
    return;
  }
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) {
      solve(x + 1);
      swap(ans[x][i], ans[x][j]);
    }
}
int main() {
  cin >> n;
  long long sum = 0;
  for (int i = 0; i < ((n) * (n)); i++) {
    cin >> a[i];
    sum += a[i];
  }
  avg = sum / n;
  cout << avg << endl;
  bool mark[10];
  memset(mark, false, sizeof mark);
  if (n == 1) {
    cout << a[0] << endl;
    return 0;
  }
  if (n == 2) {
    for (int i = 0; i < ((n) * (n)) - 2; i++)
      for (int j = 0; j < ((n) * (n)) - 1; j++)
        if (a[i] + a[j] == avg && !mark[i] && !mark[j]) {
          vector<long long> cur;
          cur.push_back(a[i]), cur.push_back(a[j]);
          ans.push_back(cur);
          mark[i] = mark[j] = true;
        }
  } else {
    for (int i = 0; i < ((n) * (n)) - 2; i++)
      for (int j = i + 1; j < ((n) * (n)) - 1; j++)
        for (int k = j + 1; k < ((n) * (n)); k++)
          if (a[i] + a[j] + a[k] == avg && !mark[i] && !mark[j] && !mark[k]) {
            vector<long long> cur;
            cur.push_back(a[i]), cur.push_back(a[j]), cur.push_back(a[k]);
            ans.push_back(cur);
            mark[i] = mark[j] = mark[k] = true;
          }
  }
  solve(0);
  if (!b) {
    swap(ans[0], ans[1]);
    solve(0);
  }
  if (!b && n == 3) {
    swap(ans[0], ans[1]);
    swap(ans[1], ans[2]);
    solve(0);
  }
  if (!b && n == 3) {
    swap(ans[1], ans[2]);
    swap(ans[0], ans[2]);
    solve(0);
  }
  return 0;
}
