#include <bits/stdc++.h>
using namespace std;
long long INV2 = 500000004;
long long INV6 = 166666668;
long long power(long long a, long long b, long long c) {
  long long x = 1, y = a;
  while (b > 0) {
    if (b & 1) x = (x * y) % c;
    y = (y * y) % c;
    b /= 2;
  }
  return x % c;
}
int dx[] = {0, -1, 0, 1};
int dy[] = {-1, 0, 1, 0};
int dr[] = {1, 1, 0, -1, -1, -1, 0, 1};
int dc[] = {0, 1, 1, 1, 0, -1, -1, -1};
int p[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59};
const int N = 105;
int a[N], b[N][1 << 18], n, dp[N][1 << 18], divi[N];
int doit(int idx, int mask) {
  if (idx == n + 1) {
    return 0;
  }
  int &ret = dp[idx][mask];
  if (ret != -1) return ret;
  int ans = INT_MAX;
  for (int i = 1; i < 60; ++i) {
    if ((divi[i] & mask) == 0) {
      int vl = abs(i - a[idx]) + doit(idx + 1, mask | divi[i]);
      if (vl < ans) {
        ans = vl;
        b[idx][mask] = i;
      }
    }
  }
  return ret = ans;
}
int main() {
  for (int i = 1; i <= 60; ++i) {
    for (int j = 0; j <= 16; ++j) {
      if (i % p[j] == 0) {
        divi[i] |= (1 << j);
      }
    }
  }
  memset(dp, -1, sizeof(dp));
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) {
    scanf("%d", &a[i]);
  }
  int vl = doit(1, 0);
  int mask = 0;
  for (int i = 1; i <= n; ++i) {
    printf("%d ", b[i][mask]);
    mask |= divi[b[i][mask]];
  }
  printf("\n");
  return 0;
}
