#include <bits/stdc++.h>
using namespace std;
long long setbit(long long num, long long ind, long long val = 1) {
  return (val) ? (num | (1 << ind)) : (num & ~(1 << ind));
}
long long getbit(long long num, long long ind) {
  return ((num >> ind) & 1) == 1;
}
int prime[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53};
long long dp[200][100100], n, a[200], Masks[200];
long long rec(int i, long long mask) {
  if (i == n) return 0;
  long long &ret = dp[i][mask];
  if (ret + 1) return ret;
  ret = 1e9;
  for (long long j = 1; j < 60; j++)
    if ((mask & Masks[j]) == 0)
      ret = min(ret, rec(i + 1, mask | Masks[j]) + abs(a[i] - j));
  return ret;
}
vector<long long> v;
void path(int i, long long mask) {
  if (i == n) return;
  long long ret = dp[i][mask];
  for (long long j = 1; j < 60; j++)
    if (((mask & Masks[j]) == 0) &&
        ret == rec(i + 1, mask | Masks[j]) + abs(a[i] - j)) {
      v.push_back(j);
      path(i + 1, mask | Masks[j]);
      break;
    }
  return;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  memset(dp, -1, sizeof dp);
  for (long long j = 1; j < 60; j++)
    for (int k = 0; k < 16; k++)
      if (j % prime[k] == 0) Masks[j] = setbit(Masks[j], k);
  cin >> n;
  for (int i = 0; i < n; i++) cin >> a[i];
  rec(0, 0);
  path(0, 0);
  for (auto x : v) cout << x << " ";
  return 0;
}
