#include using namespace std; typedef long long ll; ll power(ll base, ll power) { ll result = 1; while(power > 0) { if(power % 2 == 1) { result = (result*base); } base = (base * base); power = power / 2; } return result; } ll gpsum(ll r, ll n) { if(r == 1) return 0; return (r*((power(r, n)-1)/(r-1))); } int main() { int n; cin>>n; ll a[n]; for (int i = 0; i < n; ++i) { cin>>a[i]; } ll finalans = 0; for (ll i = 0; i < n; ++i) { unordered_map mp; ll currNum = a[i]; for (ll fa = 2; fa <= sqrt(a[i]); ++fa) { ll ct = 0; while((currNum%fa) == 0) { currNum/=fa; ct++; } if (ct > 0) mp[fa] = ct; } mp[1] = 1; if (currNum > 2) mp[currNum]++; if (a[i] == 2) mp[2] = 1; ll ans = 1; ll currMul = 1; std::vector> v; for (auto it = mp.begin(); it!= mp.end(); ++it) { v.push_back({(*it).first, (*it).second}); } sort(v.begin(), v.end()); ll prev = 1; for(ll itr = v.size()-1; itr >= 0; --itr) { currMul = gpsum(v[itr].first, v[itr].second); ans += (currMul * prev); prev *= power(v[itr].first, v[itr].second); } finalans += ans; } printf("%lld\n", finalans); return 0; }