#include <bits/stdc++.h>
using namespace std;
long long arr[1000006], mat[100][100], F[1000006], n;
long long fnc() {
  long long i, j;
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= n; j++) {
      if (mat[i][j] != mat[i][n - j + 1]) return 1;
    }
  }
  for (j = 1; j <= n; j++) {
    for (i = 1; i <= n; i++) {
      if (mat[i][j] != mat[n - i + 1][j]) return 1;
    }
  }
  return 0;
}
signed main() {
  ios_base::sync_with_stdio(false);
  long long i, maxx = 0, m, k, j, q, oc = 0, flag;
  long long ans = 0;
  cin >> n;
  for (i = 1; i <= n * n; i++) {
    cin >> arr[i];
    F[arr[i]]++;
  }
  for (i = 1; i <= 1000; i++) {
    if (F[i] % 2) oc++;
  }
  if ((n % 2 == 0 && oc > 0) || (n % 2 == 1 && oc > 1)) {
    cout << "NO";
    return 0;
  }
  if (n % 2 == 1) {
    for (k = 1; k <= 1000; k++) {
      if (F[k] % 2) break;
    }
    mat[n / 2 + 1][n / 2 + 1] = k;
    F[k]--;
    for (j = 1; j <= n / 2; j++) {
      flag = 0;
      for (k = 1; k <= 1000; k++) {
        if (F[k] % 4 != 0) {
          mat[n / 2 + 1][j] = k;
          mat[n / 2 + 1][n - j + 1] = k;
          flag = 1;
          F[k] -= 2;
          break;
        }
      }
      if (flag) continue;
      for (k = 1; k <= 1000; k++) {
        if (F[k] >= 2) {
          mat[n / 2 + 1][j] = k;
          mat[n / 2 + 1][n - j + 1] = k;
          flag = 1;
          F[k] -= 2;
          break;
        }
      }
    }
    for (i = 1; i <= n / 2; i++) {
      flag = 0;
      for (k = 1; k <= 1000; k++) {
        if (F[k] % 4 != 0) {
          mat[i][n / 2 + 1] = k;
          mat[n - i + 1][n / 2 + 1] = k;
          flag = 1;
          F[k] -= 2;
          break;
        }
      }
      if (flag) continue;
      for (k = 1; k <= 1000; k++) {
        if (F[k] >= 2) {
          mat[i][n / 2 + 1] = k;
          mat[n - i + 1][n / 2 + 1] = k;
          flag = 1;
          F[k] -= 2;
          break;
        }
      }
    }
  }
  for (i = 1; i <= n / 2; i++) {
    for (j = 1; j <= n / 2; j++) {
      for (k = 1; k <= 1000; k++) {
        if (F[k] >= 4) {
          mat[i][j] = k;
          mat[i][n - j + 1] = k;
          mat[n - i + 1][j] = k;
          mat[n - i + 1][n - j + 1] = k;
          F[k] -= 4;
          flag = 1;
          break;
        }
      }
    }
  }
  long long np = 0;
  for (k = 1; k <= 1000; k++) {
    if (F[k] != 0) {
      np = 1;
      break;
    }
  }
  if (np == 0) np = fnc();
  if (np == 0) {
    cout << "YES\n";
    for (i = 1; i <= n; i++) {
      for (j = 1; j <= n; j++) cout << mat[i][j] << " ";
      cout << endl;
    }
  } else
    cout << "NO";
  return 0;
}
