#include <bits/stdc++.h>
using namespace std;
void bi(int k) {
  if (k == 0) return;
  bi(k / 2);
  cout << k % 2;
}
int main() {
  vector<int> primes{2,  3,  5,  7,  11, 13, 17, 19, 23,
                     29, 31, 37, 41, 43, 47, 53, 59};
  int KK = 17;
  int l = primes[KK - 1] + 1;
  int h[l];
  h[0] = (2 << KK) - 1;
  for (int i = 1; i < l; ++i) {
    h[i] = 0;
    for (int j = 0; j < KK; ++j) {
      h[i] *= 2;
      if (i % primes[j] == 0) h[i]++;
    }
  }
  int n;
  cin >> n;
  int T[n + 1];
  for (int i = 1; i <= n; ++i) cin >> T[i];
  int N = (1 << KK);
  int best[n + 1][N];
  for (int i = 0; i <= n; ++i) {
    for (int pos = 0; pos < N; ++pos) {
      best[i][pos] = 2000000000;
    }
  }
  best[0][0] = 0;
  for (int i = 1; i <= n; ++i) {
    for (int r = 1; r < l; ++r) {
      for (int pos = 0; pos < N; ++pos) {
        if ((h[r] & pos) == 0) {
          best[i][(h[r] | pos)] =
              min(best[i][(h[r] | pos)], best[i - 1][pos] + abs(T[i] - r));
        }
      }
    }
  }
  int bh = (2 << KK) - 1;
  int maska = bh;
  int be = 2000000000;
  vector<int> ans;
  for (int i = 0; i < N; ++i) {
    if (best[n][i] < be) {
      be = best[n][i];
      maska = i;
    }
  }
  for (int i = n; i > 0; --i) {
    bool mam = false;
    for (int r = 1; r < l; ++r) {
      if (!mam)
        if (abs(T[i] - r) <= be) {
          if ((h[r] & (bh - maska)) == 0) {
            if (abs(T[i] - r) + best[i - 1][(maska ^ h[r])] == be) {
              ans.push_back(r);
              mam = true;
              maska -= h[r];
              be -= abs(T[i] - r);
            }
          }
        }
    }
  }
  for (int i = ans.size() - 1; i >= 0; --i) cout << ans[i] << " ";
}
