//EVIEBOT #include #define inf 0x3f3f3f3f #define INF 1000111000111000111LL #define DEBUG(x) cout << '>' << #x << ':' << x << endl; #define fastIO ios::sync_with_stdio(false);cout.tie(NULL);cin.tie(NULL); #define endl '\n' #define pb push_back #define pf push_front #define fi first #define se second #define MP make_pair #define MT make_tuple #define clr(xxx) memset(xxx, 0, sizeof(xxx)); typedef long long int lli; using namespace std; ofstream outfile; ifstream infile; unordered_map mymap; unordered_map ::iterator iter; lli sum = 0; void solve2(lli x){ iter = mymap.find(x); lli largest, temp = x; if(iter == mymap.end()){ lli maxi = 0; for(lli i = 2; i <= sqrt(x); ++i){ while(!(temp%i)){ temp /= i; if(temp == 1){ largest = i; break; } } } if(temp == x){ mymap.insert(MP(x, x+1)); return ; }else if(temp != 1){ largest = temp; } solve2(largest); solve2(x/largest); iter = mymap.find(largest); maxi = max(maxi, 1+iter->se*(x/largest)); iter = mymap.find(x/largest); maxi = max(maxi, 1+iter->se*largest); mymap.insert(MP(x, maxi)); } } int main() { infile.open("input.txt"); outfile.open("output.txt"); fastIO; lli n, i, a; mymap.insert(MP(1, 1)); cin >> n; for(i =1 ; i <= n; ++i){ cin >> a; solve2(a); iter = mymap.find(a); //cout << a << ' '<< iter->se << "\n"; sum += (iter->se); } cout << sum << "\n"; }