#include <bits/stdc++.h>
using namespace std;
long long modulo = 1e9 + 7;
template <class X>
void printarr(X arr[], long long n) {
  for (long long i = 0; i < n; ++i) cout << arr[i] << " ";
  cout << "\n";
}
long long fpow(long long a, long long n) {
  long long ans = 1;
  while (n) {
    if (n & 1) ans = (ans * a) % modulo;
    a = (a * a) % modulo;
    n = n >> 1;
  }
  return ans;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long n;
  cin >> n;
  long long ans[n][n], cnt[1001] = {0};
  for (long long i = 0; i < n * n; ++i) {
    long long x;
    cin >> x;
    ++cnt[x];
  }
  memset(ans, 0, sizeof(ans));
  vector<pair<long long, long long> > count1, count2, count4;
  for (long long i = 0; i < 1001; ++i) {
    if (cnt[i] & 1)
      count1.push_back({i, cnt[i]});
    else if (cnt[i] != 0 and cnt[i] % 4 == 0)
      count4.push_back({i, cnt[i]});
    else if (cnt[i] != 0)
      count2.push_back({i, cnt[i]});
  }
  if (n & 1) {
    if (count1.size() != 1) {
      cout << "no";
      return 0;
    }
    ans[n / 2][n / 2] = count1[0].first;
    if (count1[0].second != 0 and (count1[0].second - 1) % 4 == 0)
      count4.push_back({count1[0].first, count1[0].second - 1});
    else if (count1[0].second != 0 and (count1[0].second - 1) % 2 == 0)
      count2.push_back({count1[0].first, count1[0].second - 1});
    long long left = 4 * (n / 2);
    if (count2.size() > left) {
      cout << "no";
      return 0;
    }
    long long ptr = 0, size = count2.size();
    for (long long i = 0; i < n / 2; ++i) {
      if (size == ptr) break;
      ans[n / 2][i] = count2[ptr].first;
      if (count2[ptr].second - 2 > 0)
        count4.push_back({count2[ptr].first, count2[ptr].second - 2});
      ++ptr;
      left -= 2;
    }
    for (long long i = 0; i < n / 2; ++i) {
      if (size == ptr) break;
      ans[i][n / 2] = count2[ptr].first;
      if (count2[ptr].second - 2 > 0)
        count4.push_back({count2[ptr].first, count2[ptr].second - 2});
      ++ptr;
      left -= 2;
    }
    ptr = 0;
    size = count4.size();
    if (n > 1) {
      if (size == 0) {
        cout << "no";
        return 0;
      }
      long long num = count4[0].second, four = 4 * ((n / 2) * (n / 2)), sum = 0;
      for (pair<long long, long long> a : count4) sum += a.second;
      if (sum != (four + left)) {
        cout << "no";
        return 0;
      }
      for (long long i = 0; i < n / 2; ++i) {
        for (long long j = 0; j < n / 2; ++j) {
          ans[i][j] = count4[ptr].first;
          num -= 4;
          if (num == 0) {
            ++ptr;
            if (ptr < size) num = count4[ptr].second;
          }
        }
      }
      for (long long i = 0; i < n / 2; ++i) {
        if (ans[i][n / 2]) continue;
        ans[i][n / 2] = count4[ptr].first;
        num -= 2;
        if (num == 0) {
          ++ptr;
          if (ptr < size) num = count4[ptr].second;
        }
      }
      for (long long i = 0; i < n / 2; ++i) {
        if (ans[n / 2][i]) continue;
        ans[n / 2][i] = count4[ptr].first;
        num -= 2;
        if (num == 0) {
          ++ptr;
          if (ptr < size) num = count4[ptr].second;
        }
      }
    }
  } else {
    if (count1.size() != 0 or count2.size() != 0) {
      cout << "no";
      return 0;
    }
    long long ptr = 0, num = count4[0].second, size = count4.size();
    for (long long i = 0; i < n / 2; ++i) {
      for (long long j = 0; j < n / 2; ++j) {
        ans[i][j] = count4[ptr].first;
        num -= 4;
        if (num == 0) {
          ++ptr;
          if (ptr < size) num = count4[ptr].second;
        }
      }
    }
  }
  for (long long i = 0; i < (n + 1) / 2; ++i) {
    for (long long j = 0; j < (n + 1) / 2; ++j) {
      pair<long long, long long> index1, index2, index3, index4;
      index1 = {i, j};
      index2 = {i, n - 1 - j};
      index3 = {n - 1 - i, j};
      index4 = {n - 1 - i, n - 1 - j};
      ans[index2.first][index2.second] = ans[index1.first][index1.second];
      ans[index3.first][index3.second] = ans[index1.first][index1.second];
      ans[index4.first][index4.second] = ans[index1.first][index1.second];
    }
  }
  cout << "yes"
       << "\n";
  for (long long i = 0; i < n; ++i) {
    for (long long j = 0; j < n; ++j) cout << ans[i][j] << " ";
    cout << "\n";
  }
  return 0;
}
