func_code_string: #include <bits/stdc++.h>   using namespace std;   const int Maxn = 20;   const int Maxmask = (1 << 16);   int out[Maxn][Maxn];   bool making[Maxn][Maxmask];   int n;   int s;   int a[Maxn * Maxn];   int mod;   void input() {     cin >> n;     for (int i = 0; i < n * n; i++) {       cin >> a[i];       s += a[i];     }     s /= n;   }   void place() {     for (int i = 0; i < n * n; i++) out[i / n][i % n] = a[i];   }   bool is_true() {     int t;     for (int i = 0; i < n; i++) {       t = 0;       for (int j = 0; j < n; j++) t += out[i][j];       if (t != s) return false;       t = 0;       for (int j = 0; j < n; j++) t += out[j][i];       if (t != s) return false;     }     t = 0;     for (int i = 0; i < n; i++) t += out[i][i];     if (t != s) return false;     t = 0;     for (int i = 0; i < n; i++) t += out[i][n - i - 1];     if (t != s) return false;     return true;   }   bool found() {     int b[] = {2, 7, 6, 9, 5, 1, 4, 3, 8};     for (int i = 0; i < n * n; i++)       if (a[i] != b[i]) return false;     return true;   }   void calc_3() {     sort(a, a + n * n);     while (1) {       place();       if (is_true()) break;       next_permutation(a, a + (n * n));     }   }   void output() {     cout << s <<   n ;     for (int i = 0; i < n; i++) {       for (int j = 0; j < n; j++) cout << out[i][j] <<    ;       cout <<   n ;     }   }   int main() {     input();     calc_3();     output();     return 0;   }   