#include <bits/stdc++.h>
using namespace std;
const int MAXN = 105;
const int MAXM = 1 << 17;
const int MAXZ = 60;
const int SZ = 17;
int Primes[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59};
int n, A[MAXN], dp[MAXN][MAXM + 5], pre[MAXZ + 5];
pair<int, int> trans[MAXN][MAXM + 5];
vector<int> temp;
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) scanf("%d", A + i);
  memset(dp, 0x3f, sizeof dp);
  dp[0][0] = 0;
  for (int i = 1; i < 60; ++i) {
    int t = 0;
    for (int j = 0; j < SZ; ++j) {
      if (i % Primes[j] == 0) t |= (1 << j);
    }
    pre[i] = t;
  }
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j < MAXZ; ++j) {
      for (int k = 0; k < MAXM; ++k) {
        if (pre[j] & k)
          continue;
        else {
          if (dp[i - 1][k] + abs(A[i] - j) < dp[i][k | pre[j]]) {
            dp[i][k | pre[j]] = dp[i - 1][k] + abs(A[i] - j);
            trans[i][k | pre[j]].first = k;
            trans[i][k | pre[j]].second = j;
          }
        }
      }
    }
  }
  int ans = 0x3f3f3f3f;
  int idx = -1;
  for (int i = 0; i < MAXM; ++i) {
    if (dp[n][i] < ans) {
      ans = min(dp[n][i], ans);
      idx = i;
    }
  }
  temp.push_back(trans[n][idx].second);
  idx = trans[n][idx].first;
  --n;
  while (n) {
    temp.push_back(trans[n][idx].second);
    idx = trans[n][idx].first;
    n--;
  }
  for (int i = (int)temp.size() - 1; i >= 0; --i) cout << temp[i] << " ";
  return 0;
}
