#include <bits/stdc++.h>
using namespace std;
#define all(ac) ac.begin(), ac.end()
#define fi first
#define se second
#define pii pair <int, int>
#define task "tet"
#define db double
#define pb push_back
#define eb emplace_back
#define MASK(x) (1 << x)
#define ll long long
#define pll pair <ll, ll>
#define bit(i, j) ((i >> j) & 1)
const int N = 1e6;
vector <int> d[N + 1], g[N + 1];
int vis[N + 1];
void sang() {
for(int i=2;i<=500000;i++) {
for(int j=(i << 1);j<=N;j+=i) d[j].eb(i);
}
return;
}
struct DSU {
int n;
vector <int> lab;
DSU(int n): n(n), lab(n + 1, -1) {}
int find(int u) {return lab[u] < 0 ? u : lab[u] = find(lab[u]);}
bool join(int a, int b) {
a = find(a);
b = find(b);
if(a != b) {
if(lab[a] > lab[b]) swap(a, b);
lab[a] += lab[b];
lab[b] = a;
return true;
}
return false;
}
};
int32_t main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
if(fopen(task".inp", "r")) {
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
int n; cin >> n;
ll res = 0;
int mst = 1;
int lim = 0;
DSU dsu(n);
sang();
for(int i=1;i<=n;i++) {
int x; cin >> x;
if(vis[x] > 0) {
res += x;
mst++;
dsu.join(i, vis[x]);
continue;
}
vis[x] = i;
for(int &v : d[x]) g[v].eb(i);
if(x > 1) g[x].eb(i);
lim = max(lim, x);
}
for(int i=lim;i>=2;i--) if(g[i].size() > 1) {
int last = g[i].back();
g[i].pop_back();
for(int &v : g[i]) if(dsu.join(last, v) == true) {
res += i;
mst++;
if(mst == n) break;
}
if(mst == n) break;
}
cout << res + n - mst;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgYWxsKGFjKSBhYy5iZWdpbigpLCBhYy5lbmQoKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGlpIHBhaXIgPGludCwgaW50PgojZGVmaW5lIHRhc2sgInRldCIKI2RlZmluZSBkYiBkb3VibGUKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBlYiBlbXBsYWNlX2JhY2sKI2RlZmluZSBNQVNLKHgpICgxIDw8IHgpCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgcGxsIHBhaXIgPGxsLCBsbD4KI2RlZmluZSBiaXQoaSwgaikgKChpID4+IGopICYgMSkKCmNvbnN0IGludCBOID0gMWU2Owp2ZWN0b3IgPGludD4gZFtOICsgMV0sIGdbTiArIDFdOwppbnQgdmlzW04gKyAxXTsKCnZvaWQgc2FuZygpIHsKICAgIGZvcihpbnQgaT0yO2k8PTUwMDAwMDtpKyspIHsKICAgICAgICBmb3IoaW50IGo9KGkgPDwgMSk7ajw9TjtqKz1pKSBkW2pdLmViKGkpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdHJ1Y3QgRFNVIHsKICAgIGludCBuOwogICAgdmVjdG9yIDxpbnQ+IGxhYjsKICAgIAogICAgRFNVKGludCBuKTogbihuKSwgbGFiKG4gKyAxLCAtMSkge30KICAgIAogICAgaW50IGZpbmQoaW50IHUpIHtyZXR1cm4gbGFiW3VdIDwgMCA/IHUgOiBsYWJbdV0gPSBmaW5kKGxhYlt1XSk7fQogICAgCiAgICBib29sIGpvaW4oaW50IGEsIGludCBiKSB7CiAgICAgICAgYSA9IGZpbmQoYSk7CiAgICAgICAgYiA9IGZpbmQoYik7CiAgICAgICAgaWYoYSAhPSBiKSB7CiAgICAgICAgICAgIGlmKGxhYlthXSA+IGxhYltiXSkgc3dhcChhLCBiKTsKICAgICAgICAgICAgbGFiW2FdICs9IGxhYltiXTsKICAgICAgICAgICAgbGFiW2JdID0gYTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfTsKCmludDMyX3QgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCWNpbi50aWUoMCksIGNvdXQudGllKDApOwoJaWYoZm9wZW4odGFzayIuaW5wIiwgInIiKSkgewoJCWZyZW9wZW4odGFzayIuaW5wIiwgInIiLCBzdGRpbik7CgkJZnJlb3Blbih0YXNrIi5vdXQiLCAidyIsIHN0ZG91dCk7Cgl9CiAgICAKICAgIGludCBuOyBjaW4gPj4gbjsKICAgIGxsIHJlcyA9IDA7CiAgICBpbnQgbXN0ID0gMTsKICAgIGludCBsaW0gPSAwOwogICAgRFNVIGRzdShuKTsKICAgIHNhbmcoKTsKICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKSB7CiAgICAgICAgaW50IHg7IGNpbiA+PiB4OwogICAgICAgIGlmKHZpc1t4XSA+IDApIHsKICAgICAgICAgICAgcmVzICs9IHg7CiAgICAgICAgICAgIG1zdCsrOwogICAgICAgICAgICBkc3Uuam9pbihpLCB2aXNbeF0pOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgdmlzW3hdID0gaTsKICAgICAgICBmb3IoaW50ICZ2IDogZFt4XSkgZ1t2XS5lYihpKTsKICAgICAgICBpZih4ID4gMSkgZ1t4XS5lYihpKTsKICAgICAgICBsaW0gPSBtYXgobGltLCB4KTsKICAgIH0KICAgIAogICAgZm9yKGludCBpPWxpbTtpPj0yO2ktLSkgaWYoZ1tpXS5zaXplKCkgPiAxKSB7CiAgICAgICAgaW50IGxhc3QgPSBnW2ldLmJhY2soKTsKICAgICAgICBnW2ldLnBvcF9iYWNrKCk7CiAgICAgICAgZm9yKGludCAmdiA6IGdbaV0pIGlmKGRzdS5qb2luKGxhc3QsIHYpID09IHRydWUpIHsKICAgICAgICAgICAgcmVzICs9IGk7CiAgICAgICAgICAgIG1zdCsrOwogICAgICAgICAgICBpZihtc3QgPT0gbikgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGlmKG1zdCA9PSBuKSBicmVhazsKICAgIH0KICAgIAogICAgY291dCA8PCByZXMgKyBuIC0gbXN0OwoJcmV0dXJuIDA7Cn0=