#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define yes cout << "YES\n"
#define no cout << "NO\n"
#define debug cout << "Debug\n"
/*
---===ASCII help===---
'0' -> 48 '9' -> 57
'A' -> 65 'Z' -> 90
'a' -> 97 'z' -> 122
*/
inline void USACO(string filename) {
freopen((filename + ".in").c_str(), "r", stdin);
freopen((filename + ".out").c_str(), "w", stdout);
}
ll mod = 1000000007;
vector<ll> r, sz;
ll root(ll x) {
if (r[x] == x) return x;
r[x] = root(r[x]);
return r[x];
}
void unite(ll x, ll y) {
x = root(x); y = root(y);
if (x == y) return;
if (sz[x] > sz[y]) {
r[y] = x;
sz[x] += sz[y];
}
else {
r[x] = y;
sz[y] += sz[x];
}
}
void solve() {
ll n; cin >> n;
vector<ll> p(n);
vector<array<ll, 3>> Kruskal;
for (ll& x : p) cin >> x;
for (ll i = 0; i < n; i++) {
for (ll j = 0; j < n; j++) {
if (i == j) continue;
Kruskal.push_back({min(p[i]%p[j], p[j]%p[i]), i, j});
}
}
sz.assign(n, 1);
r.resize(n);
for (int i = 0; i < n; i++) r[i] = i;
sort(all(Kruskal));
ll ans = 0;
for (auto [d, a, b] : Kruskal) {
if (root(a) != root(b)) ans += d;
unite(a, b);
}
cout << ans << "\n";
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int t = 1;
//cin >> t;
while (t--) {
solve();
}
}