#include using namespace std; unordered_map cache; long calculate(long a){ vector factor; long result = 1; while(a % 2 == 0){ factor.push_back(2); a /= 2; } for(long i = 3; i <= sqrt(a); i += 2){ while(a % i == 0){ factor.push_back(i); a /= i; } } if(a > 2)factor.push_back(a); long temp = 1; sort(factor.begin(), factor.end()); for(auto it = factor.rbegin(); it != factor.rend(); it++){ temp *= *it; result += temp; } return result; } long longestSequence(vector a) { // Return the length of the longest possible sequence of moves. long result = 0; for(auto num : a){ result += calculate(num); } return result; } 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; }