#include <bits/stdc++.h>
using namespace std;
const int MAXN = 105, MAXA = 60, MAXP = 17;
const int P[] = {2,  3,  5,  7,  11, 13, 17, 19, 23,
                 29, 31, 37, 41, 43, 47, 53, 59};
int N, A[MAXN];
pair<int, int> dp[MAXN][1 << MAXP];
int fac[MAXA];
int ans[MAXN];
int main() {
  if (fopen("input.txt", "r")) {
    freopen("input.txt", "r", stdin);
  }
  for (int j = 0; j < MAXP; j++) {
    for (int i = P[j]; i < MAXA; i += P[j]) {
      fac[i] ^= (1 << j);
    }
  }
  scanf("%d", &N);
  for (int i = 1; i <= N; i++) {
    scanf("%d", &A[i]);
  }
  memset((dp), (1), sizeof(dp));
  dp[0][(1 << MAXP) - 1] = pair<int, int>(0, 0);
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < (1 << MAXP); j++) {
      int pdp = dp[i][j].first;
      for (int k = 1; k < MAXA; k++) {
        if ((j & fac[k]) == fac[k]) {
          pair<int, int> &ref = dp[i + 1][j ^ fac[k]];
          ref = min(ref, pair<int, int>(pdp + abs(k - A[i + 1]), k));
        }
      }
    }
  }
  for (int cur = N, mask = min_element(dp[N], dp[N] + (1 << MAXP)) - dp[N]; cur;
       cur--) {
    int x = dp[cur][mask].second;
    ans[cur] = x;
    mask ^= fac[x];
  }
  for (int i = 1; i <= N; i++) {
    printf("%d ", ans[i]);
  }
}
