n = int(eval(input()))

a = list(map(int, input().split( )))



#最小公倍数でよいか？

#全てのjについてAiBiはAjで割り切れる

#計算時間は？

from fractions import gcd

mod =10**9+7

#これが邪魔だったらしい

"""

def lcd(x,y):

    g = gcd(x,y)

    return x*y//g

"""

ag = 1

for i in range(n):

    ag = ag*a[i]//gcd(ag,a[i])



ans = 0



for i in range(n):

    ans += ag//a[i]



ans %=mod



print(ans)

#最初のを試したところ、python のほうが早かった

#メモリが問題になるせいか？

#こちらでは？



from fractions import gcd

import random

n = int(eval(input()))

a = list(map(int, input().split( )))

random.shuffle(a)

#最小公倍数でよいか？

#全てのjについてAiBiはAjで割り切れる

#計算時間は？



mod =10**9+7





ag1 = 1

for i in range(n//2):

    ag1 = ag1*a[i]//gcd(ag1,a[i])

ag2 = 1

for i in range(n//2,n):

    ag2 = ag2*a[i]//gcd(ag2,a[i])



ag3 = ag1*ag2//gcd(ag1,ag2)



ans = 0



for i in range(n//2):

    ans += ag1//a[i]

ans*=ag3//ag1

ans %=mod

ans2 = 0

for i in range(n//2,n):

    ans2 += ag2//a[i]

ans2*= ag3//ag2

ans2%=mod 

ans += ans2

ans %=mod

print(ans)

n = int(eval(input()))
a = list(map(int, input().split()))
# 最小公倍数でよいか？
# 全てのjについてAiBiはAjで割り切れる
# 計算時間は？
from fractions import gcd

mod = 10**9 + 7
# これが邪魔だったらしい
"""
def lcd(x,y):
    g = gcd(x,y)
    return x*y//g
"""
ag = 1
for i in range(n):
    ag = ag * a[i] // gcd(ag, a[i])
ans = 0
for i in range(n):
    ans += ag // a[i]
ans %= mod
print(ans)

# 最初のを試したところ、python のほうが早かった
# メモリが問題になるせいか？
# こちらでは？
from fractions import gcd
import random

n = int(eval(input()))
a = list(map(int, input().split()))
random.shuffle(a)
# 最小公倍数でよいか？
# 全てのjについてAiBiはAjで割り切れる
# 計算時間は？
mod = 10**9 + 7
ag1 = 1
for i in range(n // 2):
    ag1 = ag1 * a[i] // gcd(ag1, a[i])
ag2 = 1
for i in range(n // 2, n):
    ag2 = ag2 * a[i] // gcd(ag2, a[i])
ag3 = ag1 * ag2 // gcd(ag1, ag2)
ans = 0
for i in range(n // 2):
    ans += ag1 // a[i]
ans *= ag3 // ag1
ans %= mod
ans2 = 0
for i in range(n // 2, n):
    ans2 += ag2 // a[i]
ans2 *= ag3 // ag2
ans2 %= mod
ans += ans2
ans %= mod
print(ans)

+# 最初のを試したところ、python のほうが早かった +# メモリが問題になるせいか？ +# こちらでは？ +from fractions import gcd +import random + +random.shuffle(a) -from fractions import gcd - -# これが邪魔だったらしい -""" -def lcd(x,y): -    g = gcd(x,y) -    return x*y//g -""" -ag = 1 -for i in range(n): -    ag = ag * a[i] // gcd(ag, a[i]) +ag1 = 1 +for i in range(n // 2): +    ag1 = ag1 * a[i] // gcd(ag1, a[i]) +ag2 = 1 +for i in range(n // 2, n): +    ag2 = ag2 * a[i] // gcd(ag2, a[i]) +ag3 = ag1 * ag2 // gcd(ag1, ag2) -for i in range(n): -    ans += ag // a[i] +for i in range(n // 2): +    ans += ag1 // a[i] +ans *= ag3 // ag1 +ans %= mod +ans2 = 0 +for i in range(n // 2, n): +    ans2 += ag2 // a[i] +ans2 *= ag3 // ag2 +ans2 %= mod +ans += ans2