import sys import math #Converted my pypy2 submission to pypy3 because you get an extra second / just testing. #ugh forgot to do //= instead of /= def findBest(number,listPlz=[1],fawf=0): receivedNumber = number #print("what is da number",number) #print("currentList",listPlz) if fawf == 0: listPlz = [1] if number == 1: return listPlz ceiling = int(number) ceiling = str(math.floor((math.sqrt(ceiling))+1)) #print("ceilStr",ceiling) ceiling = ceiling.split(".")[0] ceiling = int(ceiling) #print("ceilingFinal",ceiling) for i in range(2,ceiling+2): #print("i",i) #print("number",number) #print("daMod",number % long(i)) if number % int(i) == 0: listPlz.append(int(i)) number //= int(i) break if number == receivedNumber: listPlz.append(number) return listPlz return findBest(number,listPlz,1) def fixBest(best): best = best[1:] best = sorted(best,reverse=True) best.insert(0,1) #print("fixedBest",best) return best def crunchBest(best,daSum=0,daPool=0): try: if daPool == 0: daPool += best[0] daSum += daPool else: daPool *= best[0] daSum += daPool except: return daSum best = best[1:] return crunchBest(best,daSum,daPool) def longestSequence(number): best = findBest(number) #print("best",best) best = fixBest(best) #print("fixedBest",best) crunch = crunchBest(best) #print("crunched",crunch) return crunch if __name__ == "__main__": n = int(input().strip()) a = input().split(" ") #print("a",a) for i in range(len(a)): a[i] = int(a[i]) finalSum = 0 while len(a) != 0: finalSum += longestSequence(a[0]) a.remove(a[0]) #testa = 17 #testb = 5 #testa //= testb #print(testa) print(finalSum)