#include <bits/stdc++.h>
using namespace std;
int n;
int grid[5][5];
int no[20];
int vis[20];
int hv[20];
bool pl;
int sum;
int N;
bool four() {
  grid[2][2] = hv[7];
  int t1, t2, t3;
  int s = sum - (grid[2][0] + grid[2][1] + grid[2][2]);
  bool plx = false;
  for (int i = 0; i < N; i++) {
    if (no[i] == s && vis[i] == 0) {
      t1 = i;
      vis[i] = 1;
      plx = true;
      break;
    }
  }
  if (!plx) return false;
  grid[2][3] = s;
  s = sum - (grid[2][2] + grid[1][2] + grid[0][2]);
  plx = false;
  for (int i = 0; i < N; i++) {
    if (no[i] == s && vis[i] == 0) {
      t2 = i;
      vis[i] = 1;
      plx = true;
      break;
    }
  }
  if (!plx) {
    vis[t1] = 0;
    return false;
  }
  grid[3][2] = s;
  plx = false;
  s = sum - (grid[0][0] + grid[1][1] + grid[2][2]);
  for (int i = 0; i < N; i++) {
    if (no[i] == s && vis[i] == 0) {
      t3 = i;
      vis[i] = 1;
      plx = true;
      break;
    }
  }
  if (!plx) {
    vis[t1] = 0;
    vis[t2] = 0;
    return false;
  }
  grid[3][3] = s;
  return true;
}
bool check() {
  if (n == 4)
    return four();
  else {
    int sum1 = 0;
    for (int i = 0; i < n; i++) {
      sum1 = 0;
      for (int j = 0; j < n; j++) {
        grid[i][j] = hv[i * n + j];
        sum1 += grid[i][j];
      }
      if (sum1 != sum) return false;
    }
    for (int j = 0; j < n; j++) {
      sum1 = 0;
      for (int i = 0; i < n; i++) {
        sum1 += grid[i][j];
      }
      if (sum1 != sum) return false;
    }
    sum1 = 0;
    for (int i = 0; i < n; i++) sum1 += grid[i][i];
    if (sum1 != sum) return false;
    sum1 = 0;
    for (int i = 0, j = n - 1; i < n; i++, j--) sum1 += grid[i][j];
    if (sum1 != sum) return false;
    return true;
  }
}
void print() {
  printf("%d\n", sum);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if (j) printf(" ");
      printf("%d", grid[i][j]);
    }
    printf("\n");
  }
}
void back(int pos, int lv) {
  if (pos == lv) {
    if (check()) {
      pl = true;
      print();
      return;
    }
  }
  int t1, t2, t3;
  if (n == 4) {
    if (pos == 3) {
      int s = sum - (hv[0] + hv[1] + hv[2]);
      bool plx = false;
      for (int i = 0; i < N; i++) {
        if (no[i] == s && vis[i] == 0) {
          t1 = i;
          vis[i] = 1;
          plx = true;
          break;
        }
      }
      if (!plx) return;
      grid[0][0] = hv[0];
      grid[0][1] = hv[1];
      grid[0][2] = hv[2];
      grid[0][3] = s;
    }
    if (pos == 6) {
      int s = sum - (hv[3] + hv[4] + hv[5]);
      bool plx = false;
      for (int i = 0; i < N; i++) {
        if (no[i] == s && vis[i] == 0) {
          vis[i] = 1;
          t1 = i;
          plx = true;
          break;
        }
      }
      if (!plx) return;
      grid[1][0] = hv[3];
      grid[1][1] = hv[4];
      grid[1][2] = hv[5];
      grid[1][3] = s;
    }
    if (pos == 7) {
      int s = sum - (hv[0] + hv[3] + hv[6]);
      bool plx = false;
      for (int i = 0; i < N; i++) {
        if (no[i] == s && vis[i] == 0) {
          vis[i] = 1;
          t1 = i;
          plx = true;
          break;
        }
      }
      if (!plx) return;
      grid[2][0] = hv[6];
      grid[3][0] = s;
      s = sum - (grid[0][3] + grid[1][2] + grid[3][0]);
      plx = false;
      for (int i = 0; i < N; i++) {
        if (no[i] == s && vis[i] == 0) {
          vis[i] = 1;
          plx = true;
          t2 = i;
          break;
        }
      }
      if (!plx) {
        vis[t1] = 0;
        return;
      }
      grid[2][1] = s;
      s = sum - (grid[1][1] + grid[0][1] + grid[2][1]);
      plx = false;
      for (int i = 0; i < N; i++) {
        if (no[i] == s && vis[i] == 0) {
          vis[i] = 1;
          t3 = i;
          plx = true;
          break;
        }
      }
      if (!plx) {
        vis[t1] = 0;
        vis[t2] = 0;
        return;
      }
      grid[3][1] = s;
    }
  }
  for (int i = 0; i < N; i++) {
    if (vis[i] == 0) {
      vis[i] = 1;
      hv[pos] = no[i];
      back(pos + 1, lv);
      vis[i] = 0;
    }
    if (pl) return;
  }
  if (n != 4) return;
  if (pos == 3 || pos == 6 || pos == 7) {
    vis[t1] = 0;
  }
  if (pos == 7) {
    vis[t2] = 0;
    vis[t3] = 0;
  }
}
int bal[20];
int kus[20];
int main() {
  scanf("%d", &n);
  N = n * n;
  for (int i = 0; i < N; i++) {
    scanf("%d", &no[i]);
    sum += no[i];
  }
  sort(no, no + n);
  sum /= n;
  if (n == 4) {
    back(0, 8);
  } else
    back(0, N);
  return 0;
}
