#include <bits/stdc++.h>
using namespace std;
const int maxn = 110, maxl = 60, maxm = 17, maxx = 1 << maxm;
int a[maxn], dp[maxn][maxx], fact[maxn], par[maxn][maxx];
int pr[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59};
int main() {
  for (int i = 1; i < maxl; i++)
    for (int j = 0; j < maxm; j++)
      if (i % pr[j] == 0) fact[i] += (1 << j);
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) cin >> a[i];
  memset(dp, 63, sizeof dp);
  dp[0][0] = a[0] - 1;
  par[0][0] = 1;
  for (int k = 1; k < maxl; k++)
    if (abs(a[0] - k) < dp[0][fact[k]])
      dp[0][fact[k]] = abs(a[0] - k), par[0][fact[k]] = k;
  for (int i = 1; i < n; i++)
    for (int k = 1; k < maxl; k++) {
      int x = (~fact[k]) & (maxx - 1);
      for (int s = x;; s = ((s - 1) & x)) {
        if (dp[i - 1][s] + abs(a[i] - k) < dp[i][s | fact[k]]) {
          dp[i][s | fact[k]] = dp[i - 1][s] + abs(a[i] - k);
          par[i][s | fact[k]] = k;
        }
        if (!s) break;
      }
    }
  vector<int> ans;
  int t = 0;
  for (int i = 0; i < maxx; i++) t = (dp[n - 1][i] < dp[n - 1][t]) ? i : t;
  for (int i = n - 1; i >= 0; i--)
    ans.push_back(par[i][t]), t ^= fact[par[i][t]];
  while (ans.size()) {
    cout << ans.back() << ' ';
    ans.pop_back();
  }
  return 0;
}
