#include using namespace std; #define MAXN 20010 #define INF 0x3f3f3f3f #define mo 1000000007 typedef long long LL; LL d[MAXN]; LL f[MAXN]; map< LL, LL > g; int main() { #ifdef MYCP freopen("data.in", "r", stdin); #endif // MYCP int n; LL a, ans = 0; for(scanf("%d", &n); n; --n){ scanf("%lld", &a); if(a == 1){ ++ans; continue; } if(g.find(a) != g.end()){ ans += g[a]; continue; } d[0] = 0; for(int i = 2; 1LL * i * i <= a; ++i){ if(a % i) continue; d[++d[0]] = i; if(1LL * i * i != a) d[++d[0]] = a / i; } d[++d[0]] = a; sort(d + 1, d + 1 + d[0]); for(int i = 1, m = d[0]; i <= m; ++i){ if(g.find(d[i]) != g.end()){ f[i] = g[d[i]]; continue; } f[i] = max(1LL, d[i] + 1); for(int j = 1; j < i; ++j){ if(d[i] % d[j]) continue; f[i] = max(f[i], d[i] / d[j] * f[j] + 1); } g[d[i]] = f[i]; } ans += f[d[0]]; } printf("%lld\n", ans); return 0; }