#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+1;
int a[N],x,maxn,n,fa[N],ans;
inline int read() {
int x = 0, c = getchar();
while (!isdigit(c))
c = getchar();
while (isdigit(c)) {
x = 10 * x + c - '0';
c = getchar();
}
return x;
}
struct node{
int u,v,w;
};
vector<node> e;
int find(int x){
if(fa[x]==x)return x;
return fa[x]=find(fa[x]);
}
void merge(int x,int y){
fa[find(x)]=find(y);
}
bool cmp(node x,node y){
return x.w<y.w;
}
signed main(){
//scanf("%lld",&n);
n=read();
for(int i=1;i<=n;i++){
//scanf("%lld",&a[i]);
a[i]=read();
maxn=max(maxn,a[i]);
}
sort(a+1,a+n+1);
n=unique(a+1,a+n+1)-a-1;
for(int i=1;i<=n;i++){
fa[i]=i;
int x=a[i];
for(int j=x;j<=maxn;j+=x){
int k=lower_bound(a+i+1,a+n+1,j)-a;
if (k<=n&&a[k]/x==j/x)e.push_back({i,k,a[k]%a[i]});
}
}
sort(e.begin(),e.end(),cmp);
if(n==1){
cout<<0;
return 0;
}
for(int i=0;i<e.size();i++){
if(find(e[i].u)!=find(e[i].v)){
merge(e[i].u,e[i].v);
ans+=e[i].w;
}
}
printf("%lld",ans);
return 0;
}
求助,T第8,26,29,32这四个点