#include <bits/stdc++.h>   using namespace std;   const int maxn = 1005;   int n, g[21][21], a, t[maxn];   bool ans = true;   int find(int times) {     int i = 1;     bool finded = false;     for (; i <= 1000; ++i)       if (t[i] >= times) {         finded = true;         break;       }     if (!finded) ans = false;     t[i] -= times;     return i;   }   int main() {     cin >> n;     for (int i = 0; i < n * n; i++) {       cin >> a;       t[a]++;     }     for (int i = 1; i <= n / 2; i++)       for (int j = 1; j <= n / 2; j++)         g[i][j] = g[n - i + 1][j] = g[i][n - j + 1] = g[n - i + 1][n - j + 1] =             find(4);     if (ans) {       if (n & 1) {         for (int i = 1; i <= n / 2; i++)           if (i != (n + 1) / 2) {             g[i][(n + 1) / 2] = g[n - i + 1][(n + 1) / 2] = find(2);             g[(n + 1) / 2][i] = g[(n + 1) / 2][n - i + 1] = find(2);           }         g[(n + 1) / 2][(n + 1) / 2] = find(1);       }       if (ans) {         cout <<  YES  << endl;         for (int i = 1; i <= n; i++)           for (int j = 1; j <= n; j++) cout << g[i][j] <<    n [j == n];       }     }     if (!ans) cout <<  NO  << endl;     return 0;   }   