#include using namespace std; long longestSequence(vector a) { int size = a.size(); vector factors; vector primes; primes.push_back(2); long finalResult = 0; for (int i = 0; i < size; i++) { long ai = a[i]; const long aj = ai; for (int j = 0; j < primes.size(); j++) { while (ai % primes[j] == 0) { factors.push_back(primes[j]); ai /= primes[j]; } } for (int j = primes[primes.size() - 1] + 1; ai > 1; j++) { bool isPrime = true; for (int k = 0; k < primes.size() && primes[k] * primes[k] <= j; k++) { if (j % primes[k] == 0) { isPrime = false; break; } } if (!isPrime) { continue; } primes.push_back(j); while (ai % j == 0) { factors.push_back(j); ai /= j; } } if (factors.size() == 0) { finalResult++; continue; } if (factors[0] == aj) { finalResult += aj + 1; continue; } int temp = 1; long result = aj; for (int i = factors.size() - 1; i >= 0 && temp < aj; i--) { result += temp; temp *= factors[i]; } finalResult += result; } return finalResult; } 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; }