#include <bits/stdc++.h>
using namespace std;
int dx[] = {-2, -2, -1, 1, 2, 2, 1, -1};
int dy[] = {-1, 1, 2, 2, 1, -1, -2, -2};
const int N = 17;
const int M = 101;
const int K = 59;
int z[1 << N][M];
int p[1 << N][M];
int n;
int masks[K];
int a[M];
int calc(int mask, int pos) {
  if (z[mask][pos] != -1) {
    return z[mask][pos];
  }
  if (pos == n) {
    return z[mask][pos] = 0;
  }
  z[mask][pos] = 1e9;
  for (int i = int(1); i < int(K); i++) {
    if ((mask & masks[i]) == 0) {
      int now = calc(mask | masks[i], pos + 1) + abs(i - a[pos]);
      if (now < z[mask][pos]) {
        z[mask][pos] = now;
        p[mask][pos] = i;
      }
    }
  }
  return z[mask][pos];
}
void dfs(int mask, int pos) {
  if (p[mask][pos] == -1) {
    return;
  }
  printf("%d ", p[mask][pos]);
  dfs(mask | masks[p[mask][pos]], pos + 1);
}
int main() {
  cin >> n;
  for (int i = 0; i < int(n); i++) scanf("%d", &a[i]);
  memset(z, -1, sizeof(z));
  memset(p, -1, sizeof(p));
  vector<int> mask_prost(K);
  vector<int> prost;
  int now = 0;
  for (int i = int(2); i < int(K); i++) {
    bool ok = true;
    for (int j = 0; j < int(int(prost.size())); j++) {
      if (i % prost[j] == 0) {
        ok = false;
        break;
      }
    }
    if (ok) {
      prost.push_back(i);
      mask_prost[i] = 1 << now;
      now++;
    }
  }
  for (int i = int(2); i < int(K); i++) {
    for (int j = 0; j < int(prost.size()); j++) {
      if (i % prost[j] == 0) {
        masks[i] |= (mask_prost[prost[j]]);
      }
    }
  }
  calc(0, 0);
  dfs(0, 0);
  return 0;
}
