#include using namespace std; unordered_map dp; long rec(long num){ if(dp[num] != 0){ return dp[num]; } long val = 0; long ans = num + 1; for(long j = 2; j <= sqrt(num); j++){ if(num % j == 0){ ans = max(ans, rec(j) * (num/j) + 1); if(num/j != j) { ans = max(ans, rec(num/j)*j + 1); } } } if(num == 1){ ans = 1; } dp[num] = ans; //cout << num << " " << dp[num] << endl; return ans; } long longestSequence(vector a) { long ans = 0; int n = a.size(); for(int i = 0; i < n; i++) { rec(a[i]); ans += dp[a[i]]; } return ans; } 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; }