#include <bits/stdc++.h>
using namespace std;
struct stan {
  int w, pop_zb, akt;
};
int p[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59};
const int INF = 10000;
int main() {
  ios_base::sync_with_stdio(0);
  int n;
  cin >> n;
  vector<int> a(n);
  for (int i = 0; i < n; ++i) cin >> a[i];
  vector<int> rozk(61, 0);
  for (int i = 1; i < 61; ++i)
    for (int j = 0; j < 17; ++j)
      if (i % p[j] == 0) rozk[i] |= (1 << j);
  vector<vector<int> > maski(61);
  for (int i = 1; i < 61; ++i)
    for (int j = 0; j < (1 << 17); ++j)
      if ((rozk[i] & j) == 0) maski[i].push_back(j);
  vector<vector<stan> > dp(n, vector<stan>((1 << 17), {INF, -1, 0}));
  for (int i = 1; i < 61; ++i)
    if (abs(i - a[0]) < dp[0][rozk[i]].w)
      dp[0][rozk[i]] = {abs(i - a[0]), -1, i};
  for (int i = 1; i < n; ++i) {
    for (int j = 1; j < 61; ++j) {
      for (int k = 0; k < maski[j].size(); ++k) {
        if (dp[i - 1][maski[j][k]].w + abs(j - a[i]) <
            dp[i][maski[j][k] | rozk[j]].w) {
          dp[i][maski[j][k] | rozk[j]].w =
              dp[i - 1][maski[j][k]].w + abs(j - a[i]);
          dp[i][maski[j][k] | rozk[j]].pop_zb = maski[j][k];
          dp[i][maski[j][k] | rozk[j]].akt = j;
        }
      }
    }
  }
  int zb = 0;
  for (int i = 0; i < (1 << 17); ++i)
    if (dp[n - 1][i].w < dp[n - 1][zb].w) zb = i;
  vector<int> odp;
  int nr = n - 1;
  while (nr >= 0) {
    odp.push_back(dp[nr][zb].akt);
    zb = dp[nr][zb].pop_zb;
    --nr;
  }
  reverse(odp.begin(), odp.end());
  for (int i = 0; i < n; ++i) cout << odp[i] << " ";
  return 0;
}
