# Enter your code here. Read input from STDIN. Print output to STDOUT def primes(n): sieve = [True] * n for i in xrange(3,int(n**0.5)+1,2): if sieve[i]: sieve[i*i::2*i]=[False]*((n-i*i-1)/(2*i)+1) return [1,2] + [i for i in xrange(3,n,2) if sieve[i]] movesDict={1:1} def getRes(n): global movesDict,primeSet if n in movesDict: return movesDict[n] if(n in primeSet): return n+1 maxSteps=0 moves=0 for i in range(2,int(n**0.5)+1): if (n%i==0): j=n/i currMax1=getRes(j)*i+1 currMax2=getRes(i)*j+1 maxSteps=max([maxSteps,currMax1,currMax2]) movesDict[n]=maxSteps return maxSteps n=int(raw_input()) sticks=map(int,raw_input().split()) primeSet=set(primes(max(sticks))) sum1=0 for number in sticks: sum1+=getRes(number) print(sum1)