from math import sqrt def breaking_sticks(sticks): primes = SoE(10**6) sticks = sorted(sticks) memory = {1:1} res = 0 for s in sticks: if s == 1: memory[1] = 1 res += 1 continue primeDivisors = [] for p in primes: if p > s: break; if s % p == 0: primeDivisors.append(p) primeDivisors.reverse() #print(primeDivisors) res += break_stick(s, primeDivisors, memory, 0) return res def break_stick(s, primeDivisors, memory, index): #print(s, primeDivisors, memory, index) if s in memory: return memory[s] for i in range(index, len(primeDivisors)): p = primeDivisors[i] if s % p == 0: #print(s,p) memory[s] = 1 + p * break_stick(s//p, primeDivisors, memory, i) return memory[s] def SoE(n): boolTable = [True for x in range(n-1)] primes = [] for x in range(2,n+1): if boolTable[x-2]: i = 2 primes.append(x) while x*i <= n: boolTable[x*i-2]=False i+=1 return primes if __name__ == "__main__": n = int(input().strip()) a = list(map(int, input().strip().split(' '))) result = breaking_sticks(a) print(result)