#include using namespace std; long longestSequence(vector a) { // Return the length of the longest possible sequence of moves. long seqSum = 0; long dividend, seqTemp; bool isPrime = true; for (int i = 0; i < a.size(); i++){ dividend = a[i]; seqTemp = 0; while (dividend > 1){ for (long j = 2; j <= (long)sqrt((long double)dividend); j++){ if (dividend%j == 0){ seqTemp += dividend; dividend /= j; isPrime = false; break; } } if (isPrime){ seqTemp += dividend; dividend /= dividend; } else { isPrime = true; } } seqSum += seqTemp; seqSum++; // To consider the initial split of the chocolate stick } return seqSum; } 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; }