#include #include #include #include #include #include using namespace std; map rem; long long solve(long long n) { vector data, rev; const int sq = sqrt(n); for (int i = 1; i <= sq; ++i) { if (n % i == 0) { data.push_back(i); if ((long long) i * i != n) { rev.push_back(n / i); } } } data.insert(data.end(), rev.rbegin(), rev.rend()); vector dp(data.size(), 0); dp[0] = 1; for (int i = 1; i < data.size(); ++i) { if (rem.find(data[i]) != rem.end()) { dp[i] = rem[data[i]]; } else { dp[i] = data[i] + 1; for (int j = 0; j < i; ++j) { if (data[i] % data[j]) continue; dp[i] = max(dp[i], 1 + dp[j] * (data[i] / data[j])); } rem[data[i]] = dp[i]; } } return dp.back(); } int main() { int n; cin >> n; vector a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } long long ans = 0ll; for (long long val : a) { ans += solve(val); } cout << ans << endl; return 0; }