#include using namespace std; typedef long long ll; unordered_map mem; vector primes; void sieve() { bitset<1000001> bs; bs[0] = bs[1] = 1; for (ll i = 2; i <= 1000000; i++) { if (!bs[i]) { for (ll j = i*i; j <= 1000000; j+=i) { bs[j] = 1; } primes.push_back(i); } } } ll dp(ll cur) { if (mem.find(cur) != mem.end()) return mem[cur]; if (cur == 1) return 1; ll ret = 1 + cur; for (int i = sqrt(cur); i >= 2; i--) { if (cur % i == 0) { ret = max(ret, i * dp(cur / i) + 1); ret = max(ret, cur / i * dp(i) + 1); //break; } } mem[cur] = ret; return ret; } int main() { mem.reserve(10000000); sieve(); int n; cin >> n; vector a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } ll ret = 0; for (ll i: a) { ll rett = dp(i); ret += rett; } cout << ret << endl; return 0; }