#include <bits/stdc++.h>
using namespace std;
const int maxp = 17;
const int maxn = 109;
map<int, int> mp;
const int pn[17] = {2,  3,  5,  7,  11, 13, 17, 19, 23,
                    29, 31, 37, 41, 43, 47, 53, 57};
int dp[maxn][(1 << maxp)];
int fn[maxn][(1 << maxp)];
void pre() {
  for (int i = 0; i < maxn; i++)
    for (int j = 0; j < (1 << maxp); j++)
      dp[i][j] = INT_MAX, fn[i][j] = INT_MAX;
  for (int i = 2; i < 60; i++) {
    for (int j = 0; j < 17; j++) {
      if (!(i % pn[j])) mp[i] += (1 << j);
    }
  }
  mp[1] = 0;
}
int main() {
  int n;
  scanf("%d", &n);
  pre();
  int arr[n + 1];
  for (int i = 1; i <= n; i++) scanf("%d", arr + i);
  dp[0][0] = 0;
  for (int i = 1; i <= n; i++) {
    for (int num = 1; num < 60; num++) {
      int x = mp[num];
      for (int j = 0; j < (1 << maxp); j++) {
        if (!(x & j)) {
          if (dp[i - 1][j] != INT_MAX) {
            if (dp[i][x | j] > dp[i - 1][j] + abs(arr[i] - num)) {
              dp[i][x | j] = dp[i - 1][j] + abs(arr[i] - num);
              fn[i][x | j] = num;
            }
          }
        }
      }
    }
  }
  vector<int> ans2;
  int ans = INT_MAX;
  for (int i = 0; i < (1 << maxp); i++) {
    if (dp[n][i] < ans) {
      ans = dp[n][i];
      ans2.clear();
      int x = i, x1;
      for (int j = n; j >= 1; j--) {
        x1 = fn[j][x];
        ans2.push_back(x1);
        x ^= mp[x1];
      }
    }
  }
  reverse(ans2.begin(), ans2.end());
  for (int i = 0; i < ans2.size(); i++) printf("%d ", ans2[i]);
}
