#include <bits/stdc++.h>
using namespace std;
template <typename Arg1>
void __f(const char* name, Arg1&& arg1) {
  cerr << name << " : " << arg1 << std::endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
  const char* comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}
const long long oo = INT_MAX;
const long long MOD = 1e9 + 7;
const long long sz = 1e5 + 5;
int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  long long tc = 1;
  while (tc--) {
    long long n;
    cin >> n;
    vector<long long> a(n + 1);
    for (long long i = 1; i < n + 1; ++i) cin >> a[i];
    vector<long long> primes = {2,  3,  5,  7,  11, 13, 17, 19,
                                23, 29, 31, 37, 41, 43, 47, 53};
    vector<long long> fact(61, 0);
    for (long long i = 0; i < 61; ++i) {
      for (long long j = 0; j < 16; ++j) {
        if (!(i % primes[j])) fact[i] |= (1 << j);
      }
    }
    vector<vector<long long>> dp(101, vector<long long>(1 << 16, -1));
    vector<vector<long long>> path(101, vector<long long>(1 << 16, -1));
    function<long long(long long, long long)> rec = [&](long long idx,
                                                        long long mask) {
      if (idx > n) return 0ll;
      if (dp[idx][mask] != -1) return dp[idx][mask];
      dp[idx][mask] = 1e17;
      for (long long i = 1; i < 61; ++i) {
        if (mask & fact[i]) continue;
        long long cost = rec(idx + 1, mask | fact[i]) + abs(a[idx] - i);
        if (cost < dp[idx][mask]) {
          dp[idx][mask] = cost;
          path[idx][mask] = i;
        }
      }
      return dp[idx][mask];
    };
    rec(1, 0);
    long long mask = 0;
    for (long long i = 1; i < n + 1; ++i) {
      cout << path[i][mask] << " ";
      mask |= fact[path[i][mask]];
    }
  }
}
