#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
template<typename T>
void minimize(T& a, const T& b) {
if (b < a) a = b;
}
const int N = 1e2 + 5;
int prime[17] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59};
int n;
int a[N];
int prime_mask[60]; // prime_mask[x] = mask đại diện cho tập hợp các ước nguyên tố của x
int dp[N][1 << 17]; // dp[i][mask] = Tổng bé nhất đạt được khi xét đến vị trí thứ i
// với mask đại diện cho tập hợp các ước nguyên tố đã xuất hiện
int b[N];
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
for (int x = 1; x <= 59; x++) {
for (int i = 0; i < 17; i++) {
if (x % prime[i] == 0) prime_mask[x] |= (1 << i);
}
}
for (int i = 0; i <= n; i++) {
for (int mask = 0; mask < (1 << 17); mask++) {
dp[i][mask] = INF;
}
}
dp[0][0] = 0;
for (int i = 0; i < n; i++) {
for (int mask = 0; mask < (1 << 17); mask++) {
if (dp[i][mask] == INF) continue;
for (int x = 1; x <= 59; x++) {
if ((prime_mask[x] & mask) == 0) {
int next_mask = mask | prime_mask[x];
minimize(dp[i + 1][next_mask], dp[i][mask] + abs(x - a[i + 1]));
}
}
}
}
int best_mask = 0;
for (int mask = 0; mask < (1 << 17); mask++) {
if (dp[n][mask] < dp[n][best_mask]) best_mask = mask;
}
for (int i = n; i >= 1; i--) {
for (int x = 1; x <= 59; x++) {
if ((best_mask & prime_mask[x]) == prime_mask[x]) {
int prev_mask = best_mask ^ prime_mask[x];
if (dp[i - 1][prev_mask] + abs(x - a[i]) == dp[i][best_mask]) {
b[i] = x;
best_mask = prev_mask;
break;
}
}
}
}
for (int i = 1; i <= n; i++) cout << b[i] << ' ';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kdm9pZCBtaW5pbWl6ZShUJiBhLCBjb25zdCBUJiBiKSB7CglpZiAoYiA8IGEpIGEgPSBiOyAKfQoKY29uc3QgaW50IE4gPSAxZTIgKyA1OyAKCmludCBwcmltZVsxN10gPSB7MiwgMywgNSwgNywgMTEsIDEzLCAxNywgMTksIDIzLCAyOSwgMzEsIDM3LCA0MSwgNDMsIDQ3LCA1MywgNTl9OwoKaW50IG47IAppbnQgYVtOXTsgCgppbnQgcHJpbWVfbWFza1s2MF07IC8vIHByaW1lX21hc2tbeF0gPSBtYXNrIMSR4bqhaSBkaeG7h24gY2hvIHThuq1wIGjhu6NwIGPDoWMgxrDhu5tjIG5ndXnDqm4gdOG7kSBj4bunYSB4IAppbnQgZHBbTl1bMSA8PCAxN107IC8vIGRwW2ldW21hc2tdID0gVOG7lW5nIGLDqSBuaOG6pXQgxJHhuqF0IMSRxrDhu6NjIGtoaSB4w6l0IMSR4bq/biB24buLIHRyw60gdGjhu6kgaQoJCQkJCS8vICAgICAgICAgICAgICAgduG7m2kgbWFzayDEkeG6oWkgZGnhu4duIGNobyB04bqtcCBo4bujcCBjw6FjIMaw4bubYyBuZ3V5w6puIHThu5EgxJHDoyB4deG6pXQgaGnhu4duCmludCBiW05dOyAKCmludCBtYWluKCkgewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyAKCWNpbi50aWUobnVsbHB0cik7IAkKCWNpbiA+PiBuOyAKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgY2luID4+IGFbaV07IAoKCWZvciAoaW50IHggPSAxOyB4IDw9IDU5OyB4KyspIHsKCQlmb3IgKGludCBpID0gMDsgaSA8IDE3OyBpKyspIHsKCQkJaWYgKHggJSBwcmltZVtpXSA9PSAwKSBwcmltZV9tYXNrW3hdIHw9ICgxIDw8IGkpOyAKCQl9Cgl9CgoJZm9yIChpbnQgaSA9IDA7IGkgPD0gbjsgaSsrKSB7CgkJZm9yIChpbnQgbWFzayA9IDA7IG1hc2sgPCAoMSA8PCAxNyk7IG1hc2srKykgewoJCQlkcFtpXVttYXNrXSA9IElORjsgCgkJfQoJfQoJZHBbMF1bMF0gPSAwOyAgIAoKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJZm9yIChpbnQgbWFzayA9IDA7IG1hc2sgPCAoMSA8PCAxNyk7IG1hc2srKykgewoJCQlpZiAoZHBbaV1bbWFza10gPT0gSU5GKSBjb250aW51ZTsgCgkJCWZvciAoaW50IHggPSAxOyB4IDw9IDU5OyB4KyspIHsKCQkJCWlmICgocHJpbWVfbWFza1t4XSAmIG1hc2spID09IDApIHsKCQkJCQlpbnQgbmV4dF9tYXNrID0gbWFzayB8IHByaW1lX21hc2tbeF07IAoJCQkJCW1pbmltaXplKGRwW2kgKyAxXVtuZXh0X21hc2tdLCBkcFtpXVttYXNrXSArIGFicyh4IC0gYVtpICsgMV0pKTsgCgkJCQl9CgkJCX0KCQl9Cgl9CgoJaW50IGJlc3RfbWFzayA9IDA7ICAKCWZvciAoaW50IG1hc2sgPSAwOyBtYXNrIDwgKDEgPDwgMTcpOyBtYXNrKyspIHsKCQlpZiAoZHBbbl1bbWFza10gPCBkcFtuXVtiZXN0X21hc2tdKSBiZXN0X21hc2sgPSBtYXNrOwoJfQoKCWZvciAoaW50IGkgPSBuOyBpID49IDE7IGktLSkgewoJCWZvciAoaW50IHggPSAxOyB4IDw9IDU5OyB4KyspIHsKCQkJaWYgKChiZXN0X21hc2sgJiBwcmltZV9tYXNrW3hdKSA9PSBwcmltZV9tYXNrW3hdKSB7CgkJCQlpbnQgcHJldl9tYXNrID0gYmVzdF9tYXNrIF4gcHJpbWVfbWFza1t4XTsgCgkJCQlpZiAoZHBbaSAtIDFdW3ByZXZfbWFza10gKyBhYnMoeCAtIGFbaV0pID09IGRwW2ldW2Jlc3RfbWFza10pIHsKCQkJCQliW2ldID0geDsgIAkKCQkJCQliZXN0X21hc2sgPSBwcmV2X21hc2s7IAoJCQkJCWJyZWFrOyAKCQkJCX0gCgkJCX0KCQl9Cgl9CgoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjb3V0IDw8IGJbaV0gPDwgJyAnOyAKfQo=