#include <bits/stdc++.h>
using namespace std;
const int inf = (int)1e9;
const int toN = 58;
int pn, p[10000];
int n, a[10000], omask[10000];
int dp[110][1 << 18];
int ans[110][1 << 18];
bool isPrime(int n) {
  if (n == 2) return true;
  for (int i = 2; i * i <= n; ++i)
    if (n % i == 0) return false;
  return true;
}
int main() {
  pn = 0;
  for (int i = 2; i <= toN; ++i)
    if (isPrime(i)) p[pn++] = i;
  cin >> n;
  for (int i = 0; i < n; ++i) cin >> a[i];
  for (int i = 0; i <= n; ++i) {
    for (int m = 0; m < (1 << pn); ++m) dp[i][m] = inf;
  }
  dp[0][0] = 0;
  for (int i = 1; i <= toN; ++i) {
    omask[i] = 0;
    for (int j = 0; j < pn; ++j)
      if (i % p[j] == 0) omask[i] |= (1 << j);
  }
  for (int m = 0; m < (1 << pn); ++m) {
    for (int j = 1; j <= toN; ++j)
      if ((omask[j] & m) == 0) {
        for (int i = 0; i < n; ++i)
          if (dp[i][m] < inf) {
            int nm = (m | omask[j]);
            if (dp[i + 1][nm] > dp[i][m] + abs(j - a[i])) {
              dp[i + 1][nm] = dp[i][m] + abs(j - a[i]);
              ans[i + 1][nm] = j;
            }
          }
      }
  }
  int v = 0;
  for (int m = 0; m < (1 << pn); ++m)
    if (dp[n][v] > dp[n][m]) v = m;
  vector<int> ansv;
  for (int i = n; i >= 1; --i) {
    ansv.push_back(ans[i][v]);
    v = v - omask[ans[i][v]];
  }
  reverse((ansv).begin(), (ansv).end());
  for (__typeof(ansv.begin()) it = ansv.begin(); it != ansv.end(); ++it)
    cout << *it << " ";
  return 0;
}
