#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;   }   