#include <bits/stdc++.h>
#define ll long long
#define ldb long double
#define For(i,l,r) for(int i=l;i<=r;i++)
#define ForD(i,r,l) for(int i=r;i>=l;i--)
#define ff first
#define ss second
#define pb push_back
#define all(x) x.begin(),x.end()
#define sz(x) (signed)x.size()
#define unq(x) x.resize(unique(all(x))-x.begin())
#define F "TASK"
#define fio freopen(F".INP","r",stdin);freopen(F".OUT","w",stdout);
const int N=1e5+3;
using namespace std;
int n,a[N],g[N*100],f[N];
vector<pair<int,int>> mmb[N*100];
int m;
vector<int> aa;
ll ans=0;
int find_set(int x) {
    return (f[x]<0?x:f[x]=find_set(f[x]));
}
void unite(int u,int v,ll w) {
    int a=find_set(u),b=find_set(v);
    if (a==b) return;
    m--;
    ans+=w;
    if (f[a]>f[b]) swap(a,b);
    f[a]+=f[b];
    f[b]=a;
}
int main() {
    cin.tie(0)->sync_with_stdio(0);
    cin >> n;
    For(i,1,n) {
        int x;
        cin >> x;
        aa.pb(x);
    }
    sort(all(aa));
    unq(aa);
    n=sz(aa);
    For(i,1,n) a[i]=aa[i-1];
    m=n;
    fill(g,g+10000001,-1);
    fill(f,f+1+n,-1);
    For(i,1,1e7) {
        g[i]=g[i-1];
        if (i>=a[g[i]+1]) g[i]++;
    }
    For(i,1,n)
        for(int j=a[i];j<=1e7;j+=a[i])
            if (a[g[j]]==j && j>a[i]) mmb[0].pb({i,g[j]});
            else if (g[j]+1<=n) mmb[a[g[j]+1]%a[i]].pb({g[j]+1,i});
    For(i,0,1e7) {
        for(auto el: mmb[i]) {
            unite(el.ff,el.ss,i);
        }
        if (m==1) break;
    }
    cout << ans;
    return 0;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |