func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<int> print;   const int Maxn = int(1e2) + 10;   int primes[20] = {2,  3,  5,  7,  11, 13, 17, 19, 23,                     29, 31, 37, 41, 43, 47, 53, 59};   int n, a[Maxn], xrn[60 + 10], dp[Maxn][(1 << 18) + 1000],       adad[Maxn][(1 << 18) + 1000];   void xr() {     for (int(i) = (1); (i) < (60); ++(i)) {       for (int(j) = (0); (j) < (17); ++(j))         if (i % primes[j] == 0) xrn[i] |= (1 << j);     }   }   int main() {     xr();     cin >> n;     for (int(i) = (1); (i) < (n + 1); ++(i)) cin >> a[i];     for (int(i) = (0); (i) < (n + 1); ++(i))       for (int(j) = (0); (j) < ((1 << 17)); ++(j)) dp[i][j] = int(1e9) + 10;     dp[0][0] = 0;     for (int(i) = (1); (i) < (n + 1); ++(i))       for (int(j) = (0); (j) < ((1 << 17)); ++(j))         for (int(m) = (1); (m) < (60); ++(m))           if ((j & xrn[m]) == xrn[m]) {             if (dp[i - 1][j - xrn[m]] + abs(m - a[i]) < dp[i][j])               dp[i][j] = dp[i - 1][j - xrn[m]] + abs(m - a[i]), adad[i][j] = m;           }     int ans = int(1e9) + 1000, ansj = 0;     for (int(j) = (0); (j) < ((1 << 17)); ++(j))       if (dp[n][j] < ans) ans = dp[n][j], ansj = j;     int r = n;     while (r) {       print.push_back(adad[r][ansj]);       ansj -= xrn[adad[r][ansj]];       r--;     }     for (int i = print.size() - 1; i >= 0; --i) cout << print[i] <<    ;     cout << endl;     return 0;   }   