#include <bits/stdc++.h>
const int oo = 1000000009;
const int N = 111;
const int M = 16;
using namespace std;
vector<int> val[1 << M];
int prime[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53};
vector<int> s;
int pos[M];
int n, a[N], oup[N];
pair<int, int> b[N];
int f[N][1 << M], t[N][1 << M];
int mask[100];
int main() {
  int i, j, k, ii;
  bool ok;
  for (i = 0; i < (1 << M); i++) {
    bitset<M> bb(i);
    for (ii = 1; ii <= 60; ii++) {
      ok = true;
      for (k = 0; k < M; k++)
        if (ii % prime[k] == 0 && bb[k] == 1) {
          ok = false;
          break;
        }
      if (ok) val[i].push_back(ii);
    }
  }
  for (k = 1; k <= 60; k++)
    for (i = 0; i < M; i++)
      if (k % prime[i] == 0) mask[k] += 1 << i;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) scanf("%d", &a[i]);
  int now, next;
  for (i = 1; i <= n; i++)
    for (j = 0; j < (1 << M); j++) f[i][j] = oo;
  for (i = 0; i < n; i++)
    for (j = 0; j < (1 << M); j++) {
      for (ii = 0; ii < val[j].size(); ii++) {
        now = val[j][ii];
        next = mask[now] | j;
        if (f[i + 1][next] > f[i][j] + abs(val[j][ii] - a[i + 1])) {
          f[i + 1][next] = f[i][j] + abs(val[j][ii] - a[i + 1]);
          t[i + 1][next] = val[j][ii];
        }
      }
    }
  int res = oo, pos = 0;
  for (j = 0; j < (1 << M); j++)
    if (res > f[n][j]) {
      res = f[n][j];
      pos = j;
    }
  j = pos;
  for (i = n; i; i--) {
    oup[i] = t[i][j];
    bitset<M> pp(j);
    for (k = 0; k < M; k++)
      if (oup[i] % prime[k] == 0) pp[k] = 0;
    j = pp.to_ulong();
  }
  for (i = 1; i <= n; i++) cout << oup[i] << " ";
  return 0;
}
