func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, ar[200001], f[10001], g[21][21], f1[10001];   int main() {     ios::sync_with_stdio(0), cin.tie(NULL), cout.tie(NULL);     cin >> n;     for (int i = 0; i < n * n; i++) {       cin >> ar[i];       f[ar[i]]++;       f1[ar[i]]++;     }     if (n & 1) {       int wh = 0, ck = 0, od = 0;       for (int i = 1; i <= 1000; i++) {         while (f1[i] >= 4) {           wh += 4;           f1[i] -= 4;         }         if (f1[i] >= 2) {           ck += 2;           f1[i] -= 2;         }         if (f1[i] & 1) od++;       }       if ((n * n - 1) == wh + ck && od == 1) {         for (int i = 1; i <= n / 2; i++) {           for (int j = 1; j <= n / 2; j++) {             bool b = 1;             for (int x = 1; x <= 1000; x++) {               if (f[x] >= 4) {                 f[x] -= 4;                 g[i][j] = g[n - i + 1][j] = x;                 g[i][n - j + 1] = g[n - i + 1][n - j + 1] = x;                 b = 0;                 break;               }             }             if (b) {               cout <<  NO n ;               return 0;             }           }         }         int a = 1;         for (int j = 1; j <= 1000; j++) {           if (f[j] & 1) {             g[n / 2 + 1][n / 2 + 1] = j;             f[j]--;           }           while (f[j] && a <= n / 2) {             g[a][n / 2 + 1] = g[n - a + 1][n / 2 + 1] = j;             f[j] -= 2;             a++;           }         }         a = 1;         for (int j = 1; j <= 1000; j++) {           while (f[j] && a <= n / 2) {             g[n / 2 + 1][a] = g[n / 2 + 1][n - a + 1] = j;             f[j] -= 2;             a++;           }         }         cout <<  YES n ;         for (int i = 1; i <= n; i++) {           for (int j = 1; j <= n; j++) {             cout << g[i][j] <<    ;           }           cout <<   n ;         }       } else {         cout <<  NO ;         return 0;       }     } else {       int wh = 0;       for (int i = 1; i <= 1000; i++) {         wh += f[i] / 4;       }       if (wh == n * n / 4) {         cout <<  YES n ;         for (int i = 1; i <= n / 2; i++) {           for (int j = 1; j <= n / 2; j++) {             for (int x = 1; x <= 1000; x++) {               if (f[x]) {                 f[x] -= 4;                 g[i][j] = g[n - i + 1][j] = x;                 g[i][n - j + 1] = g[n - i + 1][n - j + 1] = x;                 break;               }             }           }         }         for (int i = 1; i <= n; i++) {           for (int j = 1; j <= n; j++) {             cout << g[i][j] <<    ;           }           cout <<   n ;         }       } else {         cout <<  NO n ;       }     }     return 0;   }   