#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void amin(T &a, T b) {
  if (a > b) a = b;
}
template <class T>
inline void amax(T &a, T b) {
  if (a < b) a = b;
}
int gcd(int x, int y) {
  while (y) {
    x %= y;
    swap(x, y);
  }
  return x;
}
int GCD[111][111];
int N, B[111];
pair<int, int> A[111];
int best;
vector<int> v, best_v;
int sums[111];
void update() {
  int sum = 0;
  sum = sums[N - v.size()];
  for (int i = 0; i < int(v.size()); i++)
    sum += abs(A[i + N - v.size()].first - v[i]);
  if (best > sum) {
    best = sum;
    best_v = v;
  }
}
void rec(int x) {
  update();
  if ((int)v.size() == N || x == 59) {
    return;
  }
  bool ok = true;
  for (int i = 0; i < int(v.size()); i++)
    if (GCD[v[i]][x] != 1) {
      ok = false;
      break;
    }
  if (ok) {
    v.push_back(x);
    rec(x + 1);
    v.pop_back();
  }
  rec(x + 1);
}
int main() {
  for (int i = 0; i < int(111); i++)
    for (int j = 0; j < int(111); j++) GCD[i][j] = gcd(i, j);
  scanf("%d", &N);
  for (int i = 0; i < int(N); i++) {
    int x;
    scanf("%d", &x);
    A[i] = make_pair(x, i);
  }
  sort(A, A + N);
  for (int i = 0; i < int(N); i++) sums[i + 1] = sums[i] + A[i].first;
  best = 1 << 29;
  rec(2);
  for (int i = 0; i < int(N); i++) B[i] = 1;
  for (int i = 0; i < int(best_v.size()); i++)
    B[A[i + N - best_v.size()].second] = best_v[i];
  for (int i = 0; i < int(N); i++)
    printf("%d%c", B[i], i + 1 == N ? '\n' : ' ');
  return 0;
}
