#include #define ll int64_t #define int long long #define ld long double using namespace std; // const int maxn =1e6+5; const int maxm=1e5; const int mod = 1e9+7; // 998244353,1610612741 const ll inf = 1e18; const ld pi = atan(1.0L)*4; struct nai{ int u,v; ll w; bool operator<(const nai& other) const { return w muls[maxm+5]; int find (int u) { return (u==par[u]?u:par[u]=find(par[u])); } bool join(int u,int v) { if ((u=find(u))==(v=find(v))) return false; par[v]=u; return true; } ll lcm(ll a,ll b) { return a/__gcd(a,b)*b; } signed main() { // freopen("../input.inp","r",stdin); // freopen("output.out","w",stdout); ios::sync_with_stdio(false); cin.tie(nullptr); clock_t start,end; start=clock(); cin >>n; vector a={0}; for (int i=1;i<=n;i++) { int x; par[i]=i; cin >>x; m[x]++; a.push_back(x); } sort(a.begin(),a.end()); a.erase(unique(a.begin(),a.end()),a.end()); ll res=0; vector e; for (int i=1;i<=maxm;i++) { if (m[i]) res+=(ll)i*(m[i]-1); } for (int i=1;i<=n;i++) pos[a[i]]=i; for (int i=1;i<=maxm;i++) { for (int j=i;j<=maxm;j+=i) { if (pos[j]) muls[i].push_back(pos[j]); } for (int j=1;j