#include <bits/stdc++.h>
#define MAX 51
#define INF INT_MAX
//#define int long long
using namespace std;
inline void USACO(string filename) {
freopen((filename + ".in").c_str(), "r", stdin);
freopen((filename + ".out").c_str(), "w", stdout);
}
vector<int> e;
int get(int x){
if(e[x]<0){
return x;
}
return e[x]=get(e[x]);
}
bool same_set(int x,int y){
x=get(x);
y=get(y);
return (x==y);
}
int mx=1;
bool unite(int x,int y){
x=get(x);
y=get(y);
if(x==y){
return false;
}
if(e[x]>e[y]){
swap(x,y);
}
e[x]+=e[y];
e[y]=x;
return true;
}
void solve(){
int n;
cin >> n;
vector<int> a(n);
for(int i=0;i<n;i++){
cin >> a[i];
}
sort(a.begin(),a.end());
a.erase(unique(a.begin(),a.end()),a.end());
int mx=a[n-1];
vector<int> bs(mx+1,0);
vector<vector<pair<int,int>>> c(mx);
for(int i=0;i<n;i++){
bs[a[i]]=a[i];
}
for(int i=mx;i>=1;i--){
if(bs[i]==0){
bs[i]=bs[i+1];
}
}
for(int i=0;i<n;i++){
if(a[i]!=mx){
c[bs[a[i]+1]%a[i]].push_back({a[i],bs[a[i]+1]});
}
for(int j=2*a[i];j<=mx;j+=a[i]){
c[bs[j]%a[i]].push_back({a[i],bs[j]});
}
}
long long res=0;
e.resize(mx+1,-1);
for(int i=0;i<mx;i++){
for(auto x:c[i]){
if(unite(x.first,x.second)){
res+=i;
}
}
}
cout << res;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
int t=1;
//cin >> t;
while(t--){
solve();
}
return 0;
}