#include <bits/stdc++.h>
using namespace std;

map<long long, long long> dp;
map<long long, long long> :: iterator it;
vector<long long> divisors;

void getDivisors(long long n) {
	for(long long i = 1; i * 1LL * i <= n; i++) {
		if(n % i == 0) {
			divisors.push_back(i);
			if(i != n / i) divisors.push_back(n / i);
		}
	}
	return ;
} 

long long recurse(long long ans) {
	if(ans == 1) return 1LL;
	it = dp.find(ans);
	if(it != dp.end()) return (*it).second;
	long long maxi = 0LL;
	for(long long i = 0; i < divisors.size(); i++) {
		long long temp = divisors[i];
		if(temp != 1 && temp <= ans && (ans % temp) == 0)
			maxi = max(maxi, temp * recurse(ans / temp) + 1);
	}
	return dp[ans] = maxi;
}

int main() {
	long long ans = 0, n;
	long long t, x, y, z, a, b, c;
	scanf("%lld", &t);
	while(t--) {
		scanf("%lld", &n);
		divisors.clear();
		getDivisors(n);
		ans += recurse(n); 
	}
	printf("%lld\n", ans);
	return 0;
}