#include <bits/stdc++.h>
using namespace std;
const int S[17] = {2,  3,  5,  7,  11, 13, 17, 19, 23,
                   29, 31, 37, 41, 43, 47, 53, 59};
int n, k, A[105], P[65], dp[105][131077], F[65], L[105];
struct par {
  int i, l, val;
  par() {}
  par(int a, int b, int c) { i = a, l = b, val = c; }
} Pt[105][131077];
void print(int n, int l) {
  if (!n && !l) return;
  print(Pt[n][l].i, Pt[n][l].l);
  L[++k] = Pt[n][l].val;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &A[i]);
  for (int i = 0; i < 17; i++) P[S[i]] = i;
  int l = 131072;
  for (int i = 0; i < l; i++)
    for (int j = 0; j <= n; j++) dp[j][i] = 1e9;
  for (int i = 1; i <= 60; i++) {
    int val = i;
    for (int j = 2; j * j <= val; j++) {
      if (val % j == 0) {
        while (val % j == 0) val /= j;
        F[i] |= 1 << P[j];
      }
    }
    if (val > 1) F[i] |= 1 << P[val];
  }
  dp[0][0] = 0;
  for (int i = 1; i <= n; i++) {
    for (int mask = 0; mask < l; mask++) {
      if (dp[i - 1][mask] == 1e9) continue;
      for (int j = 1; j <= 60; j++) {
        int x = mask & F[j];
        if (x > 0) continue;
        int nmask = mask | F[j];
        int val = j >= A[i] ? j - A[i] : A[i] - j;
        if (dp[i - 1][mask] + val < dp[i][nmask]) {
          dp[i][nmask] = dp[i - 1][mask] + val;
          Pt[i][nmask] = par(i - 1, mask, j);
        }
      }
    }
  }
  int sol = 1e9, m;
  for (int mask = 0; mask < l; mask++)
    if (dp[n][mask] < sol) {
      m = mask;
      sol = dp[n][mask];
    }
  print(n, m);
  for (int i = 1; i < k; i++) printf("%d ", L[i]);
  printf("%d\n", L[k]);
  return 0;
}
