func_code_string: #include <bits/stdc++.h>   using namespace std;   int d[(1 << 17) + 20][100], par[(1 << 17) + 20][100];   int prime[20] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53};   int sum[70], a[100];   int ret, temp;   int ans = 10000000;   void pre() {     for (int i = 1; i < 59; i++) {       for (int j = 0; j < 17; j++) {         if (prime[j] > 1 && i % prime[j] == 0) sum[i] += (1 << j);       }     }   }   void pp(int mask, int ind) {     if (ind > 0) pp(mask - sum[par[mask][ind]], ind - 1);     cout << par[mask][ind] <<    ;     return;   }   int main() {     ios::sync_with_stdio(false);     int n;     cin >> n;     for (int i = 0; i < n; i++) cin >> a[i];     pre();     for (int mask = 0; mask < (1 << 17); mask++) {       ret = ans;       for (int val = 1; val < 59; val++) {         temp = ret;         if ((sum[val] & mask) == sum[val]) ret = min(ret, abs(val - a[0]));         if (temp > ret) par[mask][0] = val;       }       d[mask][0] = ret;     }     for (int mask = 0; mask < (1 << 17); mask++) {       for (int ind = 0; ind < n; ind++) {         ret = ans;         for (int val = 1; val < 59; val++) {           temp = ret;           if ((sum[val] & mask) == sum[val])             ret = min(d[mask - sum[val]][ind - 1] + abs(val - a[ind]), ret);           if (temp > ret) {             par[mask][ind] = val;           }         }         d[mask][ind] = ret;       }     }     pp((1 << 17) - 1, n - 1);     return 0;   }   