#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100;
int n, a[110],
    prime[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53};
int pto[66], dp[110][65999], you[66], pathh[110][65999], outt[110];
int main() {
  for (int i = 0; i < 16; i++) {
    pto[prime[i]] = 1 << i;
  }
  for (int i = 2; i <= 58; i++) {
    for (int j = 0; j < 16; j++) {
      if (i % prime[j] == 0) {
        you[i] |= (1 << j);
      }
    }
  }
  memset(dp, 0x3f, sizeof(dp));
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  dp[0][0] = 0;
  for (int i = 1, j, k; i <= n; i++) {
    for (j = 0; j < (1 << 16); j++) {
      int minx = 0x3f3f3f3f, mink, t;
      for (k = 1; k <= 58; k++) {
        if ((j | you[k]) > j) continue;
        t = abs(a[i] - k) + dp[i - 1][j - you[k]];
        if (t < minx) {
          minx = t, mink = k;
        }
      }
      dp[i][j] = minx, pathh[i][j] = mink;
    }
  }
  int ans = 0x3f3f3f3f, ansi;
  for (int i = 0; i < (1 << 16); i++) {
    if (dp[n][i] < ans) ans = dp[n][i], ansi = i;
  }
  outt[n] = pathh[n][ansi];
  for (int i = n - 1, j = ansi; i >= 1; i--) {
    j -= you[outt[i + 1]];
    outt[i] = pathh[i][j];
  }
  for (int i = 1; i <= n; i++) printf("%d ", outt[i]);
  return 0;
}
