#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
const int inf = 0x7fffffff;
int ans[25][25];
int n;
struct node {
  int id, cnt = 0;
  bool operator<(const node &u) const { return cnt < u.cnt; }
} a[1005];
priority_queue<node> que;
int main() {
  ios::sync_with_stdio(false);
  cin >> n;
  for (int i = 1; i <= 1000; i++) {
    a[i].id = i;
    a[i].cnt = 0;
  }
  for (int i = 1; i <= n * n; i++) {
    int x;
    cin >> x;
    a[x].cnt++;
  }
  for (int i = 1; i <= 1000; i++)
    if (a[i].cnt) que.push(a[i]);
  for (int i = 1; i <= n / 2; i++) {
    for (int j = 1; j <= n / 2; j++) {
      if (!que.empty()) {
        node u = que.top();
        que.pop();
        if (u.cnt < 4) {
          cout << "NO" << endl;
          return 0;
        }
        ans[i][j] = ans[n - i + 1][j] = ans[i][n - j + 1] =
            ans[n - i + 1][n - j + 1] = u.id;
        u.cnt -= 4;
        if (u.cnt) que.push(u);
      } else {
        cout << "NO" << endl;
        return 0;
      }
    }
  }
  if (n & 1) {
    for (int i = 1; i <= n / 2; i++) {
      if (!que.empty()) {
        node u = que.top();
        que.pop();
        if (u.cnt < 2) {
          cout << "NO" << endl;
          return 0;
        }
        ans[i][n / 2 + 1] = ans[n - i + 1][n / 2 + 1] = u.id;
        u.cnt -= 2;
        if (u.cnt) que.push(u);
      } else {
        cout << "NO" << endl;
        return 0;
      }
    }
    for (int i = 1; i <= n / 2; i++) {
      if (!que.empty()) {
        node u = que.top();
        que.pop();
        if (u.cnt < 2) {
          cout << "NO" << endl;
          return 0;
        }
        ans[n / 2 + 1][i] = ans[n / 2 + 1][n - i + 1] = u.id;
        u.cnt -= 2;
        if (u.cnt) que.push(u);
      } else {
        cout << "NO" << endl;
        return 0;
      }
    }
    if (que.size() == 1 && que.top().cnt == 1) {
      ans[n / 2 + 1][n / 2 + 1] = que.top().id;
    } else {
      cout << "NO" << endl;
      return 0;
    }
  }
  cout << "YES" << endl;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (j != 1) cout << " ";
      cout << ans[i][j];
    }
    cout << endl;
  }
  return 0;
}
