//EVIEBOT

#include <bits/stdc++.h>


#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 <lli, lli> mymap; 
unordered_map <lli, lli>::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";
}