func_code_string: #include <bits/stdc++.h>   using namespace std;   template <class T, class L>   bool smax(T& x, L y) {     return x < y ? (x = y, 1) : 0;   }   template <class T, class L>   bool smin(T& x, L y) {     return x > y ? (x = y, 1) : 0;   }   const int maxn = 16;   int n, a[maxn], b[maxn][maxn], ex;   bool mark[maxn];   vector<vector<int> > all;   void bt(int s = 0) {     if (s == n) {       for (int i = 0, sum = 0; i < n; i++, sum = 0) {         for (int j = 0; j < n; j++) sum += b[j][i];         if (sum != ex) return;       }       {         int sum = 0;         for (int i = 0; i < n; i++) sum += b[i][i];         if (sum != ex) return;       }       {         int sum = 0;         for (int i = 0; i < n; i++) sum += b[i][n - i - 1];         if (sum != ex) return;       }       for (int i = 0; i < n; i++, cout <<   n )         for (int j = 0; j < n; j++) cout << b[i][j] <<    ;       exit(0);     }     for (auto v : all) {       bool reval = 1;       for (auto x : v)         if (mark[x]) {           reval = 0;           break;         }       if (!reval) continue;       do {         for (int i = 0; i < n; i++) b[s][i] = a[v[i]], mark[v[i]] = 1;         bt(s + 1);         for (int i = 0; i < n; i++) mark[v[i]] = 0;       } while (next_permutation(v.begin(), v.end()));     }   }   int main() {     ios::sync_with_stdio(0), cin.tie();     cin >> n;     for (int i = 0; i < n * n; i++) cin >> a[i], ex += a[i];     ex /= n;     cout << ex <<   n ;     for (int i = 0; i < 1 << n * n; i++)       if (__builtin_popcount(i) == n) {         int sum = 0;         for (int j = 0; j < n * n; j++) sum += (i >> j & 1) * a[j];         if (sum == ex) {           all.push_back({});           for (int j = 0; j < n * n; j++)             if (i >> j & 1) all.back().push_back(j);           sort(all.back().begin(), all.back().end());         }       }     bt();     return 0;   }   