#include <bits/stdc++.h>
using namespace std;
int n, arr[110], ans[110];
int primes[17] = {2,  3,  5,  7,  11, 13, 17, 19, 23,
                  29, 31, 37, 41, 43, 47, 53, 59};
int fact[65];
int memo[110][1 << 17];
int find_min_cost(int ind, int mask) {
  if (ind >= n) return 0;
  if (memo[ind][mask] != -1) {
    return memo[ind][mask];
  }
  memo[ind][mask] = 1 << 30;
  for (int i = 1; i < 2 * arr[ind]; i++) {
    if ((mask & fact[i]) == 0) {
      memo[ind][mask] =
          min(memo[ind][mask],
              abs(i - arr[ind]) + find_min_cost(ind + 1, (mask | fact[i])));
    }
  }
  return memo[ind][mask];
}
void compute_ans(int ind, int mask, int min_cost) {
  if (ind >= n) return;
  for (int i = 1; i < 2 * arr[ind]; i++) {
    if (((mask & fact[i]) == 0) and
        (min_cost == abs(i - arr[ind]) + memo[ind + 1][(mask | fact[i])])) {
      ans[ind] = i;
      compute_ans(ind + 1, (mask | fact[i]), memo[ind + 1][(mask | fact[i])]);
      return;
    }
  }
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) cin >> arr[i];
  memset(fact, 0, sizeof(fact));
  for (int i = 2; i <= 62; i++) {
    for (int j = 0; j < 17; j++) {
      if ((i % primes[j]) == 0) fact[i] = (fact[i] | (1 << j));
    }
  }
  for (int i = 0; i < n; i++)
    for (int j = 0; j < (1 << 17); j++) memo[i][j] = -1;
  for (int i = 0; i < (1 << 17); i++) memo[n][i] = 0;
  int min_cost = find_min_cost(0, 0);
  compute_ans(0, 0, min_cost);
  for (int i = 0; i < n; i++) cout << ans[i] << " ";
  cout << endl;
  return 0;
}
