#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e2 + 5;
const int C = 60;
const int MAXM = 131072;
const int INF = 1e6;
int a[MAXN];
int b[MAXN];
int mask[MAXN];
int p[MAXN], p_cnt = 0;
int prv[MAXN][MAXM][2];
int dp[MAXN][MAXM];
void solve() {
  int aa, n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
  }
  for (int i = 2; i <= C; i++) {
    int fl = 0;
    for (int j = 0; j < p_cnt; j++) {
      if (i % p[j] == 0) {
        fl = 1;
        break;
      }
    }
    if (!fl) p[p_cnt++] = i;
  }
  for (int i = 1; i <= C; i++) {
    mask[i] = 0;
    for (int j = 0; j < p_cnt; j++) {
      if (i % p[j] == 0) {
        mask[i] |= (1 << j);
      }
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < (1 << 17); j++) {
      dp[i][j] = INF;
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= C; j++) {
      int mask2 = (~mask[j]) & ((1 << 17) - 1);
      for (int mask3 = mask2;; mask3 = (mask3 - 1) & mask2) {
        if (dp[i][mask[j] | mask3] > dp[i - 1][mask3] + abs(j - a[i])) {
          dp[i][mask[j] | mask3] = dp[i - 1][mask3] + abs(j - a[i]);
          prv[i][mask[j] | mask3][0] = j;
          prv[i][mask[j] | mask3][1] = mask3;
        }
        if (mask3 == 0) break;
      }
    }
  }
  int mn = INF;
  int v, msk;
  for (int i = 0; i < (1 << 17); i++) {
    if (dp[n][i] < mn) {
      mn = dp[n][i];
      msk = i;
    }
  }
  v = n;
  vector<int> res;
  while (v > 0) {
    res.push_back(prv[v][msk][0]);
    msk = prv[v][msk][1];
    v--;
  }
  reverse(res.begin(), res.end());
  for (int i = 0; i < n; i++) {
    printf("%d ", res[i]);
  }
}
int main() {
  int t = 1;
  while (t--) {
    solve();
  }
  return 0;
}
