#include <bits/stdc++.h>
using namespace std;
const int maxn = 110, maxp = 17, maxb = 60, INF = ~0u >> 1;
int n, pn;
int a[maxn], b[maxn][1 << maxp];
int fct[maxn], rd[maxn][1 << maxp];
inline int ABS(int x) { return x > 0 ? x : -x; }
int GetAns(int x, int s) {
  if (x > n) return 0;
  if (rd[x][s] != -1) return rd[x][s];
  rd[x][s] = INF;
  for (int i = 1; i < 2 * a[x]; i++) {
    if (fct[i] & s) continue;
    if (ABS(a[x] - i) + GetAns(x + 1, fct[i] | s) < rd[x][s]) {
      b[x][s] = i;
      rd[x][s] = ABS(a[x] - i) + GetAns(x + 1, fct[i] | s);
    }
  }
  return rd[x][s];
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (int i = 2; i < maxb; i++) {
    if (!fct[i]) {
      for (int j = i; j < maxb; j += i) fct[j] |= 1 << pn;
      pn++;
    }
  }
  memset(rd, -1, sizeof(rd));
  int s = GetAns(1, 0);
  s = 0;
  for (int i = 1; i <= n; i++) {
    printf("%d ", b[i][s]);
    s |= fct[b[i][s]];
  }
  return 0;
}
