#include <bits/stdc++.h>
using namespace std;
int n, a[110], b[110], fact[61];
int dk[110][150000], db[110][150000], dp[110][150000], TOP = (1 << 17);
int precalcFact(int x) {
  int p[17] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59};
  int mask = 0;
  for (int i = 0; i < 17; i++) {
    if (x % p[i] == 0) {
      mask |= (1 << i);
      while (x % p[i] == 0) x /= p[i];
    }
  }
  return mask;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  for (int i = 2; i <= 60; i++) fact[i] = precalcFact(i);
  for (int i = 1; i < 110; i++) {
    for (int j = 0; j < TOP; j++) dk[i][j] = db[i][j] = dp[i][j] - 1;
  }
  for (int j = 0; j < TOP; j++) dk[0][j] = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < TOP; j++) {
      for (int cand = 2; cand <= 60; cand++) {
        if (j & fact[cand]) continue;
        int newMask = j | fact[cand];
        int candNewK = abs(a[i - 1] - cand) + dk[i - 1][j];
        if (dk[i][newMask] == -1 || dk[i][newMask] > candNewK) {
          dk[i][newMask] = candNewK;
          db[i][newMask] = cand;
          dp[i][newMask] = j;
        }
      }
      int oneNewK = abs(a[i - 1] - 1) + dk[i - 1][j];
      if (dk[i][j] == -1 || dk[i][j] > oneNewK) {
        dk[i][j] = oneNewK;
        db[i][j] = 1;
        dp[i][j] = j;
      }
    }
  }
  int mask = 0;
  for (int j = 0; j < TOP; j++) {
    if (dk[n][j] < dk[n][mask]) mask = j;
  }
  for (int i = n - 1; i >= 0; i--) {
    b[i] = db[i + 1][mask];
    mask = dp[i + 1][mask];
  }
  for (int i = 0; i < n; i++) printf("%d ", b[i]);
}
