#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
const long long mod = 1e9 + 7;
vector<int> p;
int fac[60];
int dp[101][1 << 16], b[101][1 << 16];
int n;
int a[101];
int go(int x, int mask) {
  if (!x) return 0;
  if (dp[x][mask] != -1) {
    return dp[x][mask];
  }
  dp[x][mask] = go(x - 1, mask) + abs(a[x] - 1);
  b[x][mask] = 1;
  for (int i = 2; i <= 58; i++) {
    if ((mask & fac[i]) != fac[i]) continue;
    int val = go(x - 1, mask ^ fac[i]) + abs(a[x] - i);
    if (val < dp[x][mask]) {
      dp[x][mask] = val;
      b[x][mask] = i;
    }
  }
  return dp[x][mask];
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> a[i];
  vector<int> pr(60, 1);
  for (int i = 2; i <= 58; i++) {
    if (pr[i]) {
      p.emplace_back(i);
      for (int j = i * i; j <= 58; j += i) pr[j] = 0;
    }
  }
  int sz = p.size();
  for (int i = 1; i <= 58; i++) {
    fac[i] = 0;
    for (int j = 0; j < sz; j++) {
      if (i % p[j] == 0) {
        fac[i] |= (1 << j);
      }
    }
  }
  for (int i = 0; i < 101; i++)
    for (int j = 0; j < (1 << 16); j++) dp[i][j] = -1;
  int m = (1 << 16) - 1;
  go(n, m);
  vector<int> ans;
  for (int i = n, mm = (1 << 16) - 1; i >= 1; i--) {
    int val = b[i][mm];
    ans.emplace_back(val);
    mm ^= fac[val];
  }
  reverse(ans.begin(), ans.end());
  for (auto it : ans) cout << it << " ";
}
