#include <bits/stdc++.h>
using namespace std;
int N, ans[(int)20 + 7][(int)20 + 7], a[500];
set<pair<int, int> > st;
map<int, int> mp;
int main() {
  ios::sync_with_stdio(false);
  cin >> N;
  for (int i = 0; i < N * N; i++) {
    cin >> a[i];
    mp[a[i]]++;
  }
  int idx = -1;
  map<int, int>::iterator itt = mp.begin();
  while (itt != mp.end()) {
    st.insert({itt->second, itt->first});
    itt++;
  }
  memset(ans, -1, sizeof ans);
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
      if (ans[i][j] != -1) continue;
      if (!st.size()) return cout << "NO", 0;
      if (N % 2 && i == N / 2 || j == N / 2) {
        continue;
      }
      set<pair<int, int> >::iterator it = st.lower_bound({4, -1});
      ;
      int c = (*it).first, n = (*it).second;
      if (it == st.end()) return cout << "NO", 0;
      st.erase(it);
      c -= 4;
      if (c < 0) return cout << "NO", 0;
      ans[i][j] = n;
      ans[i][N - j - 1] = n;
      ans[N - i - 1][j] = n;
      ans[N - i - 1][N - j - 1] = n;
      if (c) st.insert({c, n});
    }
  }
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
      if (ans[i][j] != -1) continue;
      if (N % 2 && i == N / 2 && j == N / 2) continue;
      if (N % 2 && i == N / 2) {
        set<pair<int, int> >::iterator it = st.lower_bound({2, -1});
        if (it == st.end()) return cout << "NO", 0;
        st.erase(it);
        int c = (*it).first, n = (*it).second;
        c -= 2;
        if (c < 0) return cout << "NO", 0;
        ans[i][j] = n;
        ans[i][N - j - 1] = n;
        if (c) st.insert({c, n});
      } else if (N % 2 && j == N / 2) {
        set<pair<int, int> >::iterator it = st.lower_bound({2, -1});
        ;
        if (it == st.end()) return cout << "NO", 0;
        st.erase(it);
        int c = (*it).first, n = (*it).second;
        c -= 2;
        if (c < 0) return cout << "NO", 0;
        ans[i][j] = n;
        ans[N - i - 1][j] = n;
        if (c) st.insert({c, n});
      }
    }
  }
  if (N % 2) {
    ans[N / 2][N / 2] = (*st.begin()).second;
  }
  cout << "YES" << endl;
  for (int i = 0; i < N; i++, cout << endl)
    for (int j = 0; j < N; j++) cout << ans[i][j] << ' ';
  return 0;
}
