#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-9;
const int mod = (int)1e+9 + 7;
const double pi = acos(-1.0);
int pr[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61};
pair<int, pair<int, int> > x[110];
int bo[110], oo = mod;
int n, mm[62];
void rek(int k, int c, int mask, int raz) {
  if (raz > oo) {
    return;
  }
  if (k == n) {
    if (raz < oo) {
      for (int i = 0; i < n; i++) {
        bo[x[i].second.first] = x[i].second.second;
      }
      oo = raz;
    }
    return;
  }
  for (int i = c; i < 61; i++) {
    if ((mm[i] & mask) == 0) {
      x[k].second.second = i;
      rek(k + 1, i, (mask | mm[i]),
          raz + ((x[k].first - i) < 0 ? -(x[k].first - i) : (x[k].first - i)));
    }
  }
}
int main() {
  for (int i = 1; i < 61; i++) {
    int st = 1;
    for (int f = 0; f < 18; f++, st <<= 1) {
      if (i % pr[f] == 0) {
        mm[i] |= st;
      }
    }
  }
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    x[i].second.first = i;
    scanf("%d", &x[i].first);
  }
  sort(&x[0], &x[n]);
  int raz = 0;
  for (int i = 0; i < n - 18; i++) {
    x[i].second.second = 1;
    raz += x[i].first - 1;
  }
  rek(max(0, n - 18), 1, 0, raz);
  for (int i = 0; i < n; i++) {
    printf("%d ", bo[i]);
  }
  return (0);
}
