#include <bits/stdc++.h>
#define name "vestonluvto"
const char* namein = name ".inp";
const char* nameout = name ".out";
#define fastio() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define PI 3.141592653589793238462
#define sz(x) ((int)(x).size())
#define all(x) (x).begin(), (x).end()
#define pb emplace_back
using namespace std;
#ifndef LOCAL
#define debug(x) cerr << #x <<" "; _print(x); cerr << endl;
#else
#define debug(x)
#endif
void _print(int t) {cerr << t;}
void _print(long long t) {cerr << t;}
void _print(string t) {cerr << t;}
void _print(char t) {cerr << t;}
void _print(long double t) {cerr << t;}
void _print(double t) {cerr << t;}
void _print(unsigned long long t) {cerr << t;}
template <class T, class V> void _print(pair <T, V> p);
template <class T> void _print(vector <T> v);
template <class T> void _print(set <T> v);
template <class T, class V> void _print(map <T, V> v);
template <class T> void _print(multiset <T> v);
template <class T, class V> void _print(pair <T, V> p) {cerr << "{"; _print(p.first); cerr << ","; _print(p.second); cerr << "}";}
template <class T> void _print(vector <T> v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T> void _print(set <T> v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T> void _print(multiset <T> v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T, class V> void _print(map <T, V> v) {cerr << "[ "; for (auto i : v) {_print(i); cerr << " ";} cerr << "]";}
void homefix(){
#ifndef LOCAL
freopen("fixcode.txt", "w", stderr);
#endif
}
void home(){
homefix();
if (fopen(namein, "r")) {
freopen(namein, "r", stdin);
freopen(nameout, "w", stdout);
}
}
const int MAXN = 105;
const int INF = 1e9;
int n;
int a[MAXN];
int p[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53};
int fact_mask[65];
int dp[2][65536];
int head[65537];
int valid_v[3801100];
int valid_nmask[3801100];
int active[2][65536];
int n_active[2];
int vis[65536];
void nhap(){
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i];
}
}
void precompute_transitions() {
static bool done = false;
if (done) return;
done = true;
for(int v = 1; v <= 58; v++){
fact_mask[v] = 0;
for(int j = 0; j < 16; j++){
if(v % p[j] == 0){
fact_mask[v] |= (1 << j);
}
}
}
int ptr = 0;
int total_masks = 1 << 16;
for(int mask = 0; mask < total_masks; mask++){
head[mask] = ptr;
for(int v = 1; v <= 58; v++){
if((mask & fact_mask[v]) == 0){
valid_v[ptr] = v;
valid_nmask[ptr] = mask | fact_mask[v];
ptr++;
}
}
}
head[total_masks] = ptr;
}
void solve(){
precompute_transitions();
memset(vis, 0, sizeof(vis));
active[0][0] = 0;
n_active[0] = 1;
dp[0][0] = 0;
for(int i = 1; i <= n; i++){
int cur = i & 1;
int pre = cur ^ 1;
n_active[cur] = 0;
for(int k = 0; k < n_active[pre]; k++){
int mask = active[pre][k];
int cost_base = dp[pre][mask];
int start = head[mask];
int end = head[mask + 1];
for(int j = start; j < end; j++){
int nmask = valid_nmask[j];
int cost = cost_base + abs(a[i] - valid_v[j]);
if(vis[nmask] != i){
vis[nmask] = i;
dp[cur][nmask] = cost;
active[cur][n_active[cur]++] = nmask;
} else if(cost < dp[cur][nmask]){
dp[cur][nmask] = cost;
}
}
}
}
int ans = INF;
int final_state = n & 1;
for(int k = 0; k < n_active[final_state]; k++){
int mask = active[final_state][k];
if(dp[final_state][mask] < ans){
ans = dp[final_state][mask];
}
}
cout << ans << "\n";
}
int main(){
fastio(); home(); int t = 1;
//cin >> t;
while(t--) nhap(), solve();
return 0;
}