func_code_string: #include <bits/stdc++.h>   using namespace std;   int prime[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59};   int fack[62];   int dp[110][1 << 17];   int pre[110][1 << 17];   int x[110][1 << 17];   int n;   int a[110];   void init() {     memset(fack, 0, sizeof(fack));     for (int i = 1; i <= 60; i++) {       for (int j = 0; j <= 16; j++) {         if (i % prime[j] == 0) {           fack[i] += (1 << j);         }       }     }   }   void dfs(int idx, int id) {     if (idx >= 2) dfs(idx - 1, pre[idx][id]);     printf( %d%c , x[idx][id], idx == n ?   n  :    );   }   int main() {     init();     fack[1] = 0;     while (~scanf( %d , &n)) {       for (int i = 1; i <= n; i++) scanf( %d , &a[i]);       memset(dp, 50, sizeof(dp));       dp[0][0] = 0;       for (int i = 1; i <= n; i++) {         for (int s = 0; s <= (1 << 17) - 1; s++) {           for (int k = 1; k < 60; k++) {             if (s & fack[k])               continue;             else {               if (dp[i][s | fack[k]] > dp[i - 1][s] + abs(a[i] - k)) {                 dp[i][s | fack[k]] = dp[i - 1][s] + abs(a[i] - k);                 pre[i][s | fack[k]] = s;                 x[i][s | fack[k]] = k;               }             }           }         }       }       int ans = 0x3f3f3f3f;       int id;       for (int s = 0; s <= (1 << 17) - 1; s++) {         if (dp[n][s] < ans) {           ans = dp[n][s];           id = s;         }       }       dfs(n, id);     }   }   