#include <bits/stdc++.h>
using namespace std;
const int INF = 0x7f7f7f7f;
const int maxn = 100 + 20;
const int totprm = 16;
const int table[] = {0,  2,  3,  5,  7,  11, 13, 17, 19,
                     23, 29, 31, 37, 41, 43, 47, 53};
int a[maxn];
int mask[100];
int f[maxn][65540];
pair<int, int> fa[maxn][65540];
void prework();
void print(int x, int p) {
  if (p == 0) return;
  print(fa[p][x].first, p - 1);
  printf("%d ", fa[p][x].second);
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  prework();
  memset(f, 0x7f, sizeof(f));
  f[0][0] = 0;
  for (int i = 1; i <= n; i++)
    for (int j = 0; j < (1 << 16); j++)
      for (int k = 1; k <= 58; k++)
        if ((j & mask[k]) == 0 &&
            f[i - 1][j] + ((a[i] - k) >= 0 ? (a[i] - k) : -(a[i] - k)) <
                f[i][j | mask[k]]) {
          f[i][j | mask[k]] =
              f[i - 1][j] + ((a[i] - k) >= 0 ? (a[i] - k) : -(a[i] - k));
          fa[i][j | mask[k]] = pair<int, int>(j, k);
        }
  int ans = INF;
  int sol = -1;
  for (int j = 0; j < (1 << 16); j++)
    if (f[n][j] < ans) {
      ans = f[n][j];
      sol = j;
    }
  print(sol, n);
  return 0;
}
void prework() {
  memset(mask, 0, sizeof(mask));
  for (int i = 2; i <= 58; i++)
    for (int j = 1; j <= totprm; j++)
      if (i % table[j] == 0) mask[i] |= (1 << j - 1);
}
