#include <bits/stdc++.h>   using namespace std;   int vis[1005], a[1005], b[25][25];   int main() {     ios::sync_with_stdio(false);     int p, n, r, cnt, x, i, k = 0, j, flag = 0, s, t;     cin >> n;     for (i = 0; i < n * n; i++) {       cin >> x;       if (!vis[x]) {         a[k++] = x;       }       vis[x]++;     }     if (n % 2 == 0) {       for (i = 0; i < k; i++) {         if (vis[a[i]] % 4 != 0) {           flag = 1;           break;         }       }       if (flag == 1)         cout <<  NO  << endl;       else {         cout <<  YES  << endl;         s = n / 2;         r = 0;         t = vis[a[r]] / 4;         for (i = 0; i < s; i++) {           for (j = 0; j < s; j++) {             b[i][j] = a[r];             t--;             if (t == 0) {               r++;               t = vis[a[r]] / 4;             }           }         }         for (i = 0; i < s; i++) {           cnt = s - 1;           for (j = s; j < n; j++) {             b[i][j] = b[i][cnt];             cnt--;           }         }         for (i = 0; i < s; i++) {           for (j = 0; j < n; j++) {             if (j != 0) cout <<    ;             cout << b[i][j];           }           cout << endl;         }         for (i = s - 1; i >= 0; i--) {           for (j = 0; j < n; j++) {             if (j != 0) cout <<    ;             cout << b[i][j];           }           cout << endl;         }       }     } else {       cnt = 0;       if (n == 1) {         cout <<  YES  << endl << a[0] << endl;         return 0;       }       for (i = 0; i < k; i++) {         if (vis[a[i]] % 2 == 1) {           p = a[i];           cnt++;           vis[p]--;         }       }       if (cnt != 1) {         cout <<  NO  << endl;       } else {         s = n / 2;         r = 0;         while (vis[a[r]] < 4) {           r++;           if (r >= k) {             break;           }         }         if (r >= k) {           cout <<  NO  << endl;           return 0;         }         t = vis[a[r]] / 4;         for (i = 0; i < s; i++) {           for (j = 0; j < s; j++) {             if (r >= k) {               flag = 1;               break;             }             b[i][j] = a[r];             t--;             vis[a[r]] -= 4;             if (t == 0) {               r++;               while (vis[a[r]] < 4) {                 r++;                 if (r >= k) break;               }               t = vis[a[r]] / 4;             }           }         }         if (flag == 1) {           cout <<  NO  << endl;           return 0;         }         for (i = 0; i < s; i++) {           cnt = s - 1;           for (j = s + 1; j < n; j++) {             b[i][j] = b[i][cnt--];           }         }         r = 0;         while (vis[a[r]] == 0) {           r++;         }         t = vis[a[r]] / 2;         for (i = 0; i < s; i++) {           b[i][s] = a[r];           vis[a[r]] -= 2;           t--;           if (t == 0) {             while (vis[a[r]] == 0) {               r++;             }             t = vis[a[r]] / 2;           }         }         cout <<  YES  << endl;         for (i = 0; i < s; i++) {           for (j = 0; j < n; j++) {             if (j != 0) cout <<    ;             cout << b[i][j];           }           cout << endl;         }         b[s][s] = p;         r = 0;         while (vis[a[r]] == 0) {           r++;         }         t = vis[a[r]] / 2;         for (i = 0; i < s; i++) {           if (i != 0) cout <<    ;           b[s][i] = a[r];           cout << a[r];           vis[a[r]] -= 2;           t--;           if (t == 0) {             while (vis[a[r]] == 0) {               r++;               if (r >= k) break;             }             t = vis[a[r]] / 2;           }         }         cout <<     << p;         for (i = s - 1; i >= 0; i--) {           cout <<     << b[s][i];         }         cout << endl;         for (i = s - 1; i >= 0; i--) {           for (j = 0; j < n; j++) {             if (j != 0) cout <<    ;             cout << b[i][j];           }           cout << endl;         }       }     }     return 0;   }