#include using namespace std; long dp[1000006]; long maxMov(long cur) { //cout << cur << endl; long mxd = cur; if(cur == 1) return mxd; long rtv = 0; if(dp[cur] != 0) return dp[cur]; for(int cnt = cur; cnt> 1; cnt--) { if(cur % cnt == 0){ mxd = cnt; rtv = max(rtv, mxd * maxMov(cur/mxd)); } } //cout << cur/mxd << endl; //if(mxd) dp[cur] = 1+rtv; return 1+rtv; } long longestSequence(vector a) { long rt = 0; for(int cnt = 0; cnt < a.size(); cnt++) { rt += maxMov(a[cnt]); } return rt; // 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 result = longestSequence(a); cout << result << endl; return 0; }