func_code_string: #include <bits/stdc++.h>   using namespace std;   const int pr[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53};   const int m = 16;   const int INF = 1e9;   int n, d[110], por[110], vv[110], opr[110];   int f[110][65560], to[110][65560], pi[110][65560];   void init() {     scanf( %d , &n);     for (int i = 1; i <= n; i++) scanf( %d , &d[i]);     for (int i = 1; i < 59; i++) {       for (int j = 0; j < m; j++)         if (!(i % pr[j])) opr[i] |= (1 << j);     }     for (int i = 0; i <= n; i++)       for (int j = 0; j <= 65536; j++) f[i][j] = INF;   }   int main() {     init();     f[0][0] = 0;     for (int i = 1; i <= n; i++) {       for (int k = 0; k < (1 << m); k++)         if (f[i - 1][k] != INF) {           for (int j = 1; j < 59; j++) {             if (!(k & opr[j]) && f[i][k | opr[j]] > f[i - 1][k] + abs(d[i] - j)) {               f[i][k | opr[j]] = f[i - 1][k] + abs(d[i] - j);               to[i][k | opr[j]] = k;               pi[i][k | opr[j]] = j;             }           }         }     }     int ss = INF, yu = 0;     for (int i = 0; i < (1 << m); i++)       if (ss > f[n][i]) ss = f[n][i], yu = i;     for (int i = yu, c = n; c > 0; i = to[c][i], c--) vv[c] = pi[c][i];     for (int i = 1; i <= n; i++) printf( %d  , vv[i]);     printf(  n );     return 0;   }   