#include using namespace std; const int maxn = 200 + 15; int T; vector < long long > f; unordered_map < long long , long long > g; void dddiv( long long x ){ f.clear(); long long i; for(i = 1 ; i * i < x ; ++ i) if( x % i == 0 ){ f.push_back( i ); f.push_back( x / i ); } if( i * i == x ) f.push_back( i ); sort( f.begin() , f.end() ); } long long dfs( long long x ){ if( g.count( x ) ) return g[x]; long long & ret = g[x] = 0; if( x == 1 ) return ret = 1; for(auto && ir : f) if( x % ir == 0 && ir < x ) ret = max( ret , dfs( ir ) * ( x / ir ) + 1 ); return ret; } long long solve( long long x ){ dddiv(x); return dfs(x); } int main( int argc , char * argv[] ){ cin >> T; long long ans = 0; for(int i = 1 ; i <= T ; ++ i){ long long x; cin >> x; ans += solve( x ); } cout << ans << endl; return 0; }