#include <bits/stdc++.h>
using namespace std;
const int INF = 2e9 + 9;
int p[16] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53};
int fac[59];
vector<int> B;
int DP[105][(1 << 16) + 5];
int nxt[105][(1 << 16) + 5];
int N;
int pre(int n) {
  int a = 0;
  for (int i = 0; i < (int)(16); i++) {
    if (n % p[i] == 0) a += (1 << i);
  }
  return a;
}
int fDP(int pos, int mask) {
  if (pos == N) return 0;
  if (DP[pos][mask] != -1) return DP[pos][mask];
  int ans = INF;
  for (int i = 1; i < 2 * B[pos]; i++) {
    if ((mask & fac[i]) == fac[i]) {
      int v = fDP(pos + 1, mask - fac[i]) + abs(B[pos] - i);
      if (v < ans) {
        ans = v;
        nxt[pos][mask] = i;
      }
    }
  }
  return DP[pos][mask] = ans;
}
int main() {
  cin >> N;
  memset(DP, -1, sizeof(DP));
  for (int i = 1; i < (int)(59); i++) {
    fac[i] = pre(i);
  }
  B.assign(N, 0);
  for (int i = 0; i < (int)(N); i++) cin >> B[i];
  int ans = fDP(0, (1 << 16) - 1);
  int m = (1 << 16) - 1;
  for (int i = 0; i < (int)(N); i++) {
    cout << nxt[i][m] << " ";
    m = m - fac[nxt[i][m]];
  }
}
