#include <bits/stdc++.h>
using namespace std;
bool found;
int arr[100], n, n2;
bool used[100];
bool isset[4][4];
int req_sum;
int row_sum[4], col_sum[4], diag_sum[2];
int res[4][4];
inline void add(int row, int col, int val) {
  row_sum[row] += val;
  col_sum[col] += val;
  if (row == col) {
    diag_sum[1] += val;
  }
  if (n - 1 - row == col) {
    diag_sum[0] += val;
  }
}
bool bt(int row, int col) {
  if (row == n) {
    return diag_sum[1] == req_sum && diag_sum[0] == req_sum;
  }
  if (row == n - 1 && col && col_sum[col - 1] != req_sum) {
    return false;
  }
  if (col == n) {
    if (row_sum[row] != req_sum) {
      return false;
    } else {
      return bt(row + 1, 0);
    }
  }
  if (isset[row][col]) {
    return bt(row, col + 1);
  }
  bool result = false;
  for (int i = 0; i < n2 && !result; i++) {
    if (used[i]) continue;
    if (i && !used[i - 1] && arr[i - 1] == arr[i]) continue;
    bool ok = true;
    int sec = -1;
    int bf = col_sum[col];
    add(row, col, arr[i]);
    used[i] = true;
    if (row == n - 2) {
      for (int j = 0; j < n2; j++) {
        if (arr[j] + col_sum[col] == req_sum && !used[j]) {
          sec = j;
          break;
        }
      }
      if (sec == -1)
        ok = false;
      else {
        used[sec] = true;
        isset[row + 1][col] = true;
        res[row + 1][col] = arr[sec];
        add(row + 1, col, arr[sec]);
        if (col && diag_sum[0] != req_sum) {
          ok = false;
        }
      }
    }
    res[row][col] = arr[i];
    if (ok && bt(row, col + 1)) {
      result = true;
    }
    add(row, col, -arr[i]);
    used[i] = false;
    if (sec != -1) {
      add(row + 1, col, -arr[sec]);
      used[sec] = false;
    }
  }
  return result;
}
int main() {
  cin >> n;
  n2 = n * n;
  for (int i = 0; i < n2; i++) {
    cin >> arr[i];
  }
  req_sum = 0;
  for (int i = 0; i < n2; i++) {
    req_sum += arr[i];
  }
  memset(row_sum, 0, sizeof row_sum);
  memset(col_sum, 0, sizeof col_sum);
  memset(diag_sum, 0, sizeof diag_sum);
  memset(isset, 0, sizeof isset);
  req_sum /= n;
  sort(arr, arr + n2);
  found = false;
  if (!bt(0, 0)) cout << "False" << endl;
  cout << req_sum << endl;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if (j) cout << " ";
      cout << res[i][j];
    }
    cout << endl;
  }
  return 0;
}
