#include using namespace std; mapcache; long long solve(long long a){ if(a==1)return 1; if (cache.count(a))return cache[a]; long long moves=0; vectordiv; auto AA=a; for(long long i=2;i*i<=a;i++){ if(a%i==0)div.push_back(i); while(a%i==0){ a/=i; } } if(a>=2){div.push_back(a);} long long best_res=1; long long d = div.back(); // for(long long d:div){ best_res=max(best_res,1+d*solve(AA/d)); // } return cache[AA]=best_res; } long long longestSequence(vector a) { long long res=0; for(long long arg:a)res+=solve(arg); return res; // Return the length of the longest possible sequence of moves. } int main() { int n; cin >> n; vector a(n); for(int a_i = 0; a_i < n; a_i++){ cin >> a[a_i]; } long long result = longestSequence(a); cout << result << endl; return 0; }