Problem:
Score : 500 points

Problem Statement

Given are N positive integers A_1,...,A_N.

Consider positive integers B_1, ..., B_N that satisfy the following condition.

Condition: For any i, j such that 1 \leq i < j \leq N, A_i B_i = A_j B_j holds.

Find the minimum possible value of B_1 + ... + B_N for such B_1,...,B_N.

Since the answer can be enormous, print the sum modulo (10^9 +7).

Constraints

1 \leq N \leq 10^4

1 \leq A_i \leq 10^6

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
A_1 ... A_N

Output

Print the minimum possible value of B_1 + ... + B_N for B_1,...,B_N that satisfy the condition, modulo (10^9 +7).

Sample Input 1

3
2 3 4

Sample Output 1

13

Let B_1=6, B_2=4, and B_3=3, and the condition will be satisfied.

Sample Input 2

5
12 12 12 12 12

Sample Output 2

5

We can let all B_i be 1.

Sample Input 3

3
1000000 999999 999998

Sample Output 3

996989508

Print the sum modulo (10^9+7).

Solution in PyPy3 (2.4.0) (judge verdict: Time Limit Exceeded)

from functools import reduce
from fractions import gcd

# スペース区切りの入力を読み込んで数値リストにして返します。
def get_nums_l():
    return [ int(s) for s in input().split(" ")]

def lcm(a):
    x = a[0]
    for i in range(1, len(a)):
        x = (x * a[i]) // gcd(x, a[i])
    return x

debug = False

if debug:
    n = 10000
    aaa = [ a*100+1 for a in range(n) ]
else:
    n = int(input())
    aaa = get_nums_l()

cm = reduce(lambda a,b: a*b, aaa)

ans_0 = [ cm//a for a in aaa ] 
gcd_ = reduce(gcd, ans_0)

# gcd_ = reduce(gcd, aaa)
# x = [ a//gcd_ for a in aaa ]
# lcm_ = gcd_ * reduce(lambda a,b: a*b, x)
# lcm_ = (lcm(aaa))

ans = 0
for a in ans_0:
    ans = (ans + a//gcd_) % (10**9+7)
print(ans % (10**9+7))