#include #define rep(i, a, b) for (int i = (a); i <= (b); ++i) #define per(i, a, b) for (int i = (a); i >= (b); --i) #define pb push_back #define mp make_pair #define pr pair #define x first #define y second using namespace std; template void read(T& n){ char ch; int sign = 1; while (!isdigit(ch = getchar())) if (ch == '-') sign = -1; n = ch - '0'; while (isdigit(ch = getchar())) n = n * 10 + ch - '0'; n *= sign; } typedef long long ll; const int INF = 1e9 + 7; long longestSequence(vector a) { // Return the length of the longest possible sequence of moves. ll ans = 0; for (int i = 0; i < a.size(); ++i){ vector fac; ll x, j; for (x = a[i], j = 2; j * j <= x; ++j) if (x % j == 0) for (; x > 1&&x % j == 0; x /= j) fac.pb(j); if (x > 1) fac.pb(x); sort(fac.begin(), fac.end()), reverse(fac.begin(), fac.end()); ll cnt = 0, cur = 1; for (int i = 0; i < fac.size(); ++i) cnt += cur, cur *= fac[i]; ans += cnt + cur; } return ans; } int main() { int n; cin >> n; vector a(n); for(int a_i = 0; a_i < n; a_i++){ cin >> a[a_i]; } long result = longestSequence(a); cout << result << endl; return 0; }