#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;
}
