Harryxun/stf_run huggingface dataset:
N, M = map(int, input().split())
As = list(map(int, input().split()))
Ds = []
for i in range(M):
    B, C = map(int, input().split())
    D = [C] * B
    Ds.extend(D)

Ds.sort(reverse=True)

for i in range(N):
    As.sort()
    if As[0] < Ds[i]:
        As[0] = Ds[i]
    else:
        break

print(sum(As))

### FIXED CODE ###

N, M = map(int, input().split())
As = list(map(int, input().split()))
adic = {}
for a in As:
    adic[a] = adic.get(a, 0) + 1

Ds = []
for a in adic:
    Ds.append([a, adic[a]])
for i in range(M):
    B, C = map(int, input().split())
    Ds.append([C,B])

Ds.sort(reverse=True)

count, sum = 0,0
for D in Ds:
    c = D[1] if D[1] + count <= N else N - count
    sum += c * D[0]
    count += c
    if count == N:
        break

print(sum)
from sys import stdin
dx = (1, 0, -1, 0)
dy = (0, 1, 0, -1)
H, W = [int(_) for _ in stdin.readline().rstrip().split()]
field = [list(stdin.readline().rstrip()) for _ in range(H)]
seen = [[False for i in range(400)] for j in range(400)]
num_b, num_w = 0, 0
ans = 0

def dfs(h, w):
    seen[h][w] = True
    if field[h][w] == '#':
        global num_b
        num_b += 1
    else:
        global num_w
        num_w += 1

    for direction in range(4):
        nh = h + dx[direction]
        nw = w + dy[direction]

        if nh < 0 or nh >= H or nw < 0 or nw >= W:
            continue
        if field[nh][nw] == field[h][w]:
            continue
        if seen[nh][nw]:
            continue

        dfs(nh, nw)

for i in range(H):
    for j in range(W):
        if field[i][j] == '.':
            continue
        if seen[i][j]:
            continue
        num_b, num_w = 0, 0
        dfs(i, j)
        ans += num_b * num_w 

print(ans)

### FIXED CODE ###

import sys
from sys import stdin
sys.setrecursionlimit(10**7)
dx = (1, 0, -1, 0)
dy = (0, 1, 0, -1)
H, W = [int(_) for _ in stdin.readline().rstrip().split()]
field = [list(stdin.readline().rstrip()) for _ in range(H)]
seen = [[False for i in range(400)] for j in range(400)]
num_b, num_w = 0, 0
ans = 0

def dfs(h, w):
    seen[h][w] = True
    if field[h][w] == '#':
        global num_b
        num_b += 1
    else:
        global num_w
        num_w += 1

    for direction in range(4):
        nh = h + dx[direction]
        nw = w + dy[direction]

        if nh < 0 or nh >= H or nw < 0 or nw >= W:
            continue
        if field[nh][nw] == field[h][w]:
            continue
        if seen[nh][nw]:
            continue

        dfs(nh, nw)

for i in range(H):
    for j in range(W):
        if field[i][j] == '.':
            continue
        if seen[i][j]:
            continue
        num_b, num_w = 0, 0
        dfs(i, j)
        ans += num_b * num_w 

print(ans)
A, B, C, K = map(int, input().split())
if A >= K:
  print(K)
else if A+B >= K:
  print(A)
else:
  print(A-(K-A-B))

### FIXED CODE ###

A, B, C, K = map(int, input().split())

result = 0
t = min(A, K)
result += t
K -= t
t = min(B, K)
K -= t
t = min(C, K)
result -= t
print(result)
N = int(input())
L = list(map(int, input().split()))

for i in L:
  for k in L[1:]:
    if i<=k || i-1<=k:
      ans="yes"
    else:
      ans="no"
      
print(ans)


### FIXED CODE ###

N=int(input())
H=list(map(int, input().split()))
maxv=H[0]
ans="Yes"
for i in range(1, N):
  if maxv-H[i]>=2:
    ans="No"
    break
  maxv=max(maxv, H[i])
print(ans)
import math
a, b, c, d = map(int, input().split())
ans = 0

def lcm(x, y):
    return (x * y) // math.gcd(x, y)

cd = lcm(c, d)

# cの倍数とdの倍数の個数を数える
ca = a // c
# print(ca)
cb = b // c
# print(cb)
tmp_c = cb - ca

da = a // d
# print(da)
db = b // d
# print(db)
tmp_d = db - da

cda = a // cd
# print(cda)
cdb = b // cd
# print(cdb)
tmp_cd = cdb - cda
ans = b - a - (tmp_c + tmp_d - tmp_cd) + 1

print(ans)


### FIXED CODE ###

import fractions
a, b, c, d = map(int, input().split())
ans = 0

def lcm(x, y):
    return (x * y) // fractions.gcd(x, y)

cd = lcm(c, d)

# cの倍数とdの倍数の個数を数える
# cの倍数dの倍数の個数を引く
ca = ((a-1) // c)
# print(ca)
cb = (b // c)
# print(cb)
tmp_c = cb - ca

da = (a // d)
# print(da)
db = (b // d)
# print(db)
tmp_d = db - da

cda = (a // cd)
# print(cda)
cdb = (b // cd)
# print(cdb)
tmp_cd = cdb - cda
ans = b - a + 1 - (tmp_c + tmp_d - tmp_cd)

print(ans)
A, B, C = list(map(int, input().split()))
  
print(max(A+B, A-B, A*B))


### FIXED CODE ###

A, B = list(map(int, input().split()))
  
print(max([A+B, A-B, A*B]))
N=int(input())
P=list(map(int,input().split()))
import numpy
Q=numpy.array(P)
 
result =numpy.prod(Q)
 
if result>pow(10, 18):
    print('-1')
else:
    print(str(result))

### FIXED CODE ###

a,b=map(int,input().split())
print(a*b)
import sys
import math
input = sys.stdin.readline
def lcm(x, y):
  return (x * y) // math.gcd(x, y)


A, B, C, D = map(int, input().split())
lcm=lcm(C,D)
ans = B-A+1 - (B//C-A//C) - (B//D-A//D) + (B//(lcm)-A//(lcm)) 


print(ans)

### FIXED CODE ###

import sys
import fractions
input = sys.stdin.readline
def lcm(x, y):
  return (x * y) // fractions.gcd(x, y)


A, B, C, D = map(int, input().split())
lcm=lcm(C,D)
ans = B-A+1 - (B//C-(A-1)//C) - (B//D-(A-1)//D) + (B//(lcm)-(A-1)//(lcm)) 


print(ans)
n = input()
print(n ** 3)

### FIXED CODE ###

n = int(input())
print(n ** 3)
n, m, q = [int(x) for x in input().split()]

t = [sorted(x) for x in list(itertools.product(range(1, m + 1), repeat=(m-1)))]
t = list(map(list, set(map(tuple, t))))

tmp = []
for i in range(q):
    a, b, c, d = [int(x) for x in input().split()]
    tmp.append([a, b, c, d])

score = 0
for _t in t:
    _s = 0
    for a, b, c, d in tmp:
        if c == _t[b - 1] - _t[a - 1]:
            _s += d
    score = max(_s, score)
print(score)

### FIXED CODE ###

import itertools

n, m, q = [int(x) for x in input().split()]
 
tmp = []
for i in range(q):
    a, b, c, d = [int(x) for x in input().split()]
    tmp.append([a, b, c, d])

t = list(itertools.combinations_with_replacement(range(1, m + 1), n))

score = 0
for _t in t:
    _s = 0
    for a, b, c, d in tmp:
        if c == _t[b - 1] - _t[a - 1]:
            _s += d
    score = max(_s, score)
print(score)
n=int(input())
S=[]
for i in range(n):
  S.append(sorted(input().split()))
print(n-len(set(S)))
  
  

### FIXED CODE ###

n=int(input())
d={}
totl=0

for i in range(n):
  s=list(input())
  s.sort()
  t=''.join(s)
  
  if t in d:
    d[t]+=1
  else:
    d[t]=1

for t in d:
  totl+=d[t]*(d[t]-1)/2

print(int(totl))
def resolve():
    A, B, K = list(map(int, input().split()))
    l = list(range(A, B+1))
    if 2*K > len(l):
        mn, mx = l, l
    else:
        mn = l[:K]
        mx = l[-K:]
    ans = mn + mx
    ans = list(set(ans))
    ans.sort()
    ans = list(map(str, ans))
    print('\n'.join(ans))

resolve()

### FIXED CODE ###

def resolve():
    A, B, K = list(map(int, input().split()))
    if B - A + 1 >= 2 * K:
        ls = [i for i in range(A, A+K)] + [i for i in range(B-K+1, B+1)]
    else:
        ls = [i for i in range(A, B+1)]

    print('\n'.join(map(str, ls)))
    return

resolve()
N = input()
S = 0
for i in range(1, N+1):
	if i%3==0 or i%5==0:
      continue
    S += i
    
print(S)

### FIXED CODE ###

N = int(input())
S = 0
for i in range(1, N+1):
    if i%3==0 or i%5==0 or (i%3==0 and i%5==0):
        continue
    S+=i
print(S)
N = int(input())
A = map(int, input().split())

T = 1
xyz = [0]*3
for Ai in A:
  T = ((T%1000000007) * (sum([i==Ai for i in xyz])%1000000007))%1000000007
  xyz[xyz.index(Ai)] += 1
print(T)

### FIXED CODE ###

N = int(input())
A = map(int, input().split())

T = 1
xyz = [0]*3
for Ai in A:
  if xyz.count(Ai)>0:
    T = (T * xyz.count(Ai))%1000000007
    xyz[xyz.index(Ai)] += 1
  else:
    T = 0
    break
print(T)
n=int(input())
a=list(map(int, input().split()))

money=1000

chart=[a[0]]
flag=0

for i in range(n):
    if flag==0:
        if a[i]>chart[-1]:
            chart.append(a[i])
            flag=1

    else:
        if a[i]<chart[-1]:
            cnt=0
            M=0
            for j in range(i, n):
                if a[i]<a[j]:
                    cnt+=1
                    if M<a[j]:
                        M=a[j]
            
            if cnt==0:
                break
            elif cnt==1:
                chart.append(M)
                break
            else:
                flag=0

days=len(chart)

for day in range(days):
    if day%2==0:
        contact=money//chart[i]
        money-=contact*chart[i]
    
    else:
        money+=contact*chart[i]

print(money)

### FIXED CODE ###

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

money=1000

chart=[a[0]]

for kabuka in a:
    if kabuka==chart[-1]:
        continue
    else:
        chart.append(kabuka)

days=len(chart)
kabu=0

if days==1:
    print(money)
    exit()

for i in range(days):
    if i==0:
        if chart[0]<chart[1]:
            kabu=money//chart[0]
            money%=chart[0]

    elif i==days-1:
        money+=kabu*chart[i]
        kanu=0
    
    else:
        if chart[i-1]<chart[i] and chart[i]>chart[i+1]:
            money+=kabu*chart[i]
            kabu=0

        if chart[i-1]>chart[i] and chart[i]<chart[i+1]:
            kabu=money//chart[i]
            money%=chart[i]

print(money)
N = int(input())
S = input()
zero = S.count('0')
one = S.count('1')
print(min(zero,one)*2)

### FIXED CODE ###

S = input()
zero = S.count('0')
one = S.count('1')
print(min(zero,one)*2)
while 1:
    x, y = map(int, raw_input().split())
    if x == 0 and y == 0:
        break
    if y < x:
        print '%s %s' %(y,x)
    else:
        print '%s %s' %(x,y)
    

### FIXED CODE ###

while 1:
   x, y = map(int, raw_input().split())
   if x == 0 and y == 0:
      break
   elif x > y:
      print '%s %s' % (y,x)
   else:
      print '%s %s' % (x,y)
from bisect import bisect_left, bisect_right
N = int(input())
S = input()
Q = int(input())

D = {chr(ord('a') + i): [] for i in range(26)}
for i, s in enumerate(S):
    D[s].append(i)

for q in range(Q):
    query = list(input().split())
    if query[0] == '1':
        i, x = int(query[1]), query[2]
        i -= 1
        s = S[i]
        if s == x:
            continue

        D[s].remove(i)
        next_i = bisect_left(D[x], i)
        D[x].insert(next_i, i)

    if query[0] == '2':
        l, r = int(query[1]), int(query[2])
        l, r = l - 1, r - 1
        ans = 0
        for i in range(26):
            s = chr(ord('a') + i)

            li = bisect_left(D[s], l)
            ri = bisect_right(D[s], r)

            if ri - li > 0:
                ans += 1

        print(ans)

print(D)


### FIXED CODE ###

from bisect import bisect_left, bisect_right
N = int(input())
S = list(input())
Q = int(input())

D = {chr(ord('a') + i): [] for i in range(26)}

for i, s in enumerate(S):
    D[s].append(i)

for q in range(Q):
    query = list(input().split())
    if query[0] == '1':
        i, x = int(query[1]), query[2]
        i -= 1
        s = S[i]
        if s == x:
            continue

        D[s].remove(i)
        next_i = bisect_left(D[x], i)
        D[x].insert(next_i, i)
        S[i] = x

    if query[0] == '2':
        l, r = int(query[1]), int(query[2])
        l, r = l - 1, r - 1
        ans = 0
        for i in range(26):
            s = chr(ord('a') + i)

            li = bisect_left(D[s], l)
            ri = bisect_right(D[s], r)

            if ri - li > 0:
                ans += 1

        print(ans)
N = int(input())
answer = 1000
b = 0
for a in range(round(abs(N))):
  if N&a == 0:
    b = N/a
    if answer < min(len(str(a)), len(str(b))):
      answer = min(len(str(a)), len(str(b)))
print(answer)

### FIXED CODE ###

import math

N = int(input())
answer = []
b = 0
for a in range(1,round(math.sqrt(N))+1):
  if N%a == 0:
    b = N//a
    answer.append(max(len(str(a)), len(str(b))))
print(min(answer))
answer = x **3
print(answer)

### FIXED CODE ###

x = int(input())
y = x **3
print(y, end = "\n")
a,b,c=map(int,input())
if (a!=b and b!=c and c!=a) or (a==b and b==c):
  print('No')
else:
  print('Yes')


### FIXED CODE ###

a,b,c=map(int,input().split())
if (a!=b and b!=c and c!=a) or (a==b and b==c):
  print('No')
else:
  print('Yes')
n = int(input())
for i in range(1, 10):
    for j in range(1, 10):
        if i * j == n:
            print('Yes')
            quit()
else:
    print('No')


### FIXED CODE ###

a, b = map(int, input().split())
print(-1 if a not in range(1, 10) or b not in range(1, 10) else a*b)
hw = raw_input().split(" ")
h = int(hw[0])
w = int(hw[1])
print("#"*(w+2))
for i in range(h):
    print("#" + raw_input() + "#")

print("#"*(w+2))

### FIXED CODE ###


i = raw_input().strip().split(" ")
x = int(i[0])
y = int(i[1])

groups = []
groups.append([1, 3, 5, 7, 8, 10, 12])
groups.append([4, 6, 9, 11])
groups.append([2])

for g in groups:
    if x in g and y in g:
        print "Yes"
        break
else:
    print "No"
# -*- coding: utf-8 -*-
a = int(input())
if a <=9:
  print("{}".format(a));
  return
if a <=99:
  print('9')
  return;
if a < 999:
  print("{}".format(9+a-99))
  return
if a <= 9999:
  print('909')
  return
print("{}".format(909+a-9999))

### FIXED CODE ###

a = int(input())
if a <10:
  print("{}".format(a))
elif a <100:
  print("9")
elif a < 1000:
  print("{}".format(9+a-99))
elif a < 10000:
  print('909')
elif a < 100000:
  print("{}".format(909+a-9999))
else:
  print('90909')
a0,a1,a2=map(int,input().split())
a3,a4,a5=map(int,input().split())
a6,a7,a8=map(int,input().split())
N=int(input())
b=[int(input()) for _ in range(N)]
A=[a0,a1,a2,a3,a4,a5,a6,a7,a8]

for i in range(N):
  for p in range(9):
    if b[i]=A[p]:
      A=0
  
if A[0]==A[1]==A[2]==0 or A[3]==A[4]==A[5]==0 or A[6]==A[7]==A[8]==0 or A[0]==A[3]==A[6]==0 0r A[1]==A[4]==A[7]==0 or A[2]==A[5]==A[8]==0 or A[0]==A[4]==A[8]==0 or A[2]==A[4]==A[6]==0:
  print("Yes")
else:
  print("No")

### FIXED CODE ###

a0,a1,a2=map(int,input().split())
a3,a4,a5=map(int,input().split())
a6,a7,a8=map(int,input().split())
N=int(input())
b=[int(input()) for _ in range(N)]
A=[a0,a1,a2,a3,a4,a5,a6,a7,a8]

for i in range(N):
  for p in range(9):
    if b[i]==A[p]:
      A[p]=0
  
if A[0]==A[1]==A[2]==0 or A[3]==A[4]==A[5]==0 or A[6]==A[7]==A[8]==0 or A[0]==A[3]==A[6]==0 or A[1]==A[4]==A[7]==0 or A[2]==A[5]==A[8]==0 or A[0]==A[4]==A[8]==0 or A[2]==A[4]==A[6]==0:
  print("Yes")
else:
  print("No")
# https://atcoder.jp/contests/abc045/tasks/arc061_a

s = input()

length = len(s)
ans = 0
for i in range(2 << length - 2):
    temp = []
    for j in range(length):
        t = (i >> j) & 1
        temp.append(s[j])
        if t:
            temp.append('+')
    ans += eval(''.join(temp))
print(ans)

### FIXED CODE ###

# https://atcoder.jp/contests/abc045/tasks/arc061_a

s = input()

length = len(s)
if length == 1:
    print(s)
else:
    ans = 0
    for i in range(2 << length - 2):
        temp = []
        for j in range(length):
            t = (i >> j) & 1
            temp.append(s[j])
            if t:
                temp.append('+')
        ans += eval(''.join(temp))
    print(ans)
import math
 
N,M = map(int,input().split())
 
ans = 1
for i in range(1,M+1):
  if M % i != 0:#約数ではないとき
    continue
  B = M / i
  
  if (i * N <= M):
    ans = max(ans,i)
  if (B * N <= M):
    ans = max(ans,B)

print(ans)

### FIXED CODE ###

N = int(input())
if N == 1 :
  print("Hello World")
else:
  A = int(input())
  B = int(input())
  print( A + B )
list_a = [int(x) for x in input().split()]
N = int(input())
list_b = [int(x) for x in input().split()]

list_c = [0,0,0,0,0,0,0,0,0]
for i in range(N):
    for j in range(9):
        if list_a[j] == list_b[i]:
            list_c[j] = 1

flag=0
if list_c[0]==1 and list_c[1]==1 and list_c[2]==1:
    flag=1
if list_c[3]==1 and list_c[4]==1 and list_c[5]==1:
    flag=1
if list_c[6]==1 and list_c[7]==1 and list_c[8]==1:
    flag=1
if list_c[0]==1 and list_c[3]==1 and list_c[6]==1:
    flag=1
if list_c[1]==1 and list_c[4]==1 and list_c[7]==1:
    flag=1
if list_c[2]==1 and list_c[5]==1 and list_c[8]==1:
    flag=1
if list_c[0]==1 and list_c[4]==1 and list_c[8]==1:
    flag=1
if list_c[2]==1 and list_c[4]==1 and list_c[6]==1:
    flag=1
    
if flag == 1:
    print('Yes')
else:
    print('No')

### FIXED CODE ###

list_1 = list(map(int,input().split()))
list_2 = list(map(int,input().split()))
list_3 = list(map(int,input().split()))

#n,m = map(int,raw_input().split())
#list_a = []
#for i in range(M) 
list_a=list_1


for x in list_2:
    list_a.append(x)


for x in list_3:
    list_a.append(x)


N = int(input())
#list_b = [int(x) for x in input().split()]
#list_b = list(map(int,input().split()))


list_b=[]
for k in range(N):
    b=int(input())
    list_b.append(b)


list_c = [0,0,0,0,0,0,0,0,0]
for i in range(N):
    for j in range(9):
        if list_a[j] == list_b[i]:
            list_c[j] = 1

flag=0
if list_c[0]==1 and list_c[1]==1 and list_c[2]==1:
    flag=1
if list_c[3]==1 and list_c[4]==1 and list_c[5]==1:
    flag=1
if list_c[6]==1 and list_c[7]==1 and list_c[8]==1:
    flag=1
if list_c[0]==1 and list_c[3]==1 and list_c[6]==1:
    flag=1
if list_c[1]==1 and list_c[4]==1 and list_c[7]==1:
    flag=1
if list_c[2]==1 and list_c[5]==1 and list_c[8]==1:
    flag=1
if list_c[0]==1 and list_c[4]==1 and list_c[8]==1:
    flag=1
if list_c[2]==1 and list_c[4]==1 and list_c[6]==1:
    flag=1
    
if flag == 1:
    print('Yes')
else:
    print('No')
a,b=input().split()
A=int(a)
B=float(100*b)
ans=A*B/100
print(int(ans))



### FIXED CODE ###

from math import floor
from fractions import Fraction
a, b = input().split()
a = int(a)
b = Fraction(b)
print(floor(a * b))
M = int(input())
    print(48-M)

### FIXED CODE ###

M = int(input())
print(48-M)
N = int(input())
l = [input() for _ in range(N)]
l.sort()
l2 = []
for i in range(0,N-1):
    if (l[i]==l[i+1]):
        l2.append(l[i])
ans=list(set(l2))
if len(l2)==0:
    for k in range(0,N):
        print(l[k])
for j in range(0,len(l2)):
    print(ans[j])

### FIXED CODE ###

from collections import Counter
N = int(input())
S = Counter(input() for _ in range(N))
m = max(S.values())
for v in sorted(k for k, v in S.items() if v == m):
	print(v)
a=int(input())
b=int(input())
c=int(input())
d=int(input())
tmp=[a*c,a*d,b*c,b*d]
print(max(tmp))


### FIXED CODE ###

a,b,c,d=list(map(int,input().split()))
tmp=[a*c,a*d,b*c,b*d]
print(max(tmp))
import sys

H, W = map(int, input().split())
S = [list(input()) for i in range(H)]
dx = [-1, 0, 1, 0]
dy = [0, -1, 0, 1]

for i in range(H):
    for j in range(W):
        if(S[i][j]=="."):
            continue
        exist = False
        for k in range(4):
            if(0<=i+dy[k]<H and 0<=j+dx[k]<W and S[i+dy[k]][j+dx[k]]=="#"):
                exist = True
        if(exist==False):
            print("No")
            sys.exit()     
if(exist==True):
    print("Yes")

### FIXED CODE ###

import sys

H, W = map(int, input().split())
S = [list(input()) for i in range(H)]
dx = [-1, 0, 1, 0]
dy = [0, -1, 0, 1]

for i in range(H):
    for j in range(W):
        if(S[i][j]=="."):
            continue
        exist = False
        for k in range(4):
            if(0<=i+dy[k]<H and 0<=j+dx[k]<W and S[i+dy[k]][j+dx[k]]=="#"):
                exist = True
        if(exist==False):
            print("No")
            sys.exit()     
print("Yes")
import math

A, B = map(int, input().split())

print(A * B // math.gcd(A, B))


### FIXED CODE ###

A, B = map(int, input().split())

def gcd(a, b):
    if b == 0:
        return a
    return gcd(b, a % b)

print(A * B // gcd(A, B))
N=int(input())
a=int(N/100)
b=int((N-a*100)/10)
c=int(N-100*a-10*b)
l=int()
if a*b*c==7l:
    print('yes')
else:
    print('no')

### FIXED CODE ###

N=input()
if '7' in N:
    print('Yes')
else:
    print('No')
def min(a,i):
for t in range(0, i):
  if a[0] > a[t]:
    a[0] = a[t]
  return a[0]

def max(a,i):
for t in range(0, i):
  if a[0] < a[t]:
    a[0] = a[t]
  return a[0]

def sum(a,i):
for t in range(1, i):
  a[0] += a[t]
  return a[0]

i = int(raw_input().split())
a = map(int, raw_input().split())
print min(a,i) max(a,i) sum(a,i)

### FIXED CODE ###

def min(a,i):
  x = a[0]
  for t in range(0, i):
    if x > a[t]:
      x = a[t]
  return x

def max(a,i):
  y = a[0]
  for t in range(0, i):
    if y < a[t]:
      y = a[t]
  return y

def sum(a,i):
  s = 0
  for t in range(0, i):
    s += a[t]
  return s

i = int(raw_input())
a = map(int, raw_input().split())
print "%d %d %d" % (min(a,i), max(a,i), sum(a,i))
A, B, C, K = map(int, input().split())

if A >= K:
    print(K)
elif  A < K <= A+B:
    print(A)
elif A+B < K <= A+B+C:
    print(A-(K-A-B))

### FIXED CODE ###

S = str(input())
T = str(input())
a = 0


if len(T)-len(S)==1:
    for i in range(len(S)):
        if S[i] == T[i]:
            a += 1

if a == len(S):
    print('Yes')
else:
    print('No')
o=str(input())
e=str(input())
s="A"
for i in range(0,len(o)):
  s=s+o[i]+e[i]
s=s.lstrip("A")
print(s)

### FIXED CODE ###

o=str(input())
e=str(input())
s="A"
l=min(len(o),len(e))
for i in range(0,l):
  s=s+o[i]+e[i]
if len(o)<len(e):
  s=s+e[len(e)-1]
elif len(o)>len(e):
  s=s+o[len(o)-1]
s=s.lstrip("A")
print(s)
#!/usr/bin/env python
# coding: utf-8

# In[1]:


import sys
input = sys.stdin.readline
N, M = map(int, input().split())
A = list(map(int, input().split()))
bcs = [list(map(int, input().split())) for i in range(M)]
"""
10 3
1 8 5 7 100 4 52 33 13 5
3 10
4 30
1 4
"""


# In[32]:


#print(N, M)
#print(A)
#print(bcs)


# In[14]:


def binary_search(nbs, tar):
    #print(nbs, tar)
    ln = 0
    rn = len(nbs)-1
    t = int(len(nbs)/2)
    
    while ln < rn:
        comp = nbs[t]
        if tar >= comp and tar<nbs[t+1]:
            break
        elif tar >= comp: # 今の値がtar以下であれば、
            ln = t + 1 # 左端をt+1に更新
        elif tar < comp: # 今の値が
            rn = t - 1 # 右端をt-1に更新
        t = int((ln+rn)/2)
    return t


# In[15]:


sbcs = sorted(bcs, key=lambda x:x[1], reverse=True)
nb = 0
sA = sorted(A)
#print(sA)
#print(sbcs)
for i in range(M):
    if nb >= N: # nbがN以上になれば、終了
        break
    
    B, C = sbcs[i]
    #print(B, C, nb)
    if sA[nb] >= C: # もしnb個目がCより大きければ、終了
        break
    if sA[nb+B-1] < C: #もしB個目が、Cより小さければ、B個目までをCにする
        sA[nb:nb+B] = [C]*B
        nb += B
        continue
    
    t = binary_search(sA[nb:nb+B], C)
    #print(t)
    sA[nb:nb+t+1] = [C]*(t+1)
    nb += t+1
#print(sA)
print(sum(sA))


# In[ ]:






### FIXED CODE ###

#!/usr/bin/env python
# coding: utf-8

# In[1]:


import sys
input = sys.stdin.readline
N, M = map(int, input().split())
A = list(map(int, input().split()))
bcs = [list(map(int, input().split())) for i in range(M)]


# In[14]:


"""
def binary_search(nbs, tar):
    #print(nbs, tar)
    ln = 0
    rn = len(nbs)-1
    t = int(len(nbs)/2)
    
    while ln < rn:
        comp = nbs[t]
        if tar >= comp and tar<nbs[t+1]:
            break
        elif tar >= comp: # 今の値がtar以下であれば、
            ln = t + 1 # 左端をt+1に更新
        elif tar < comp: # 今の値がtarより大きければ、
            rn = t - 1 # 右端をt-1に更新
        t = int((ln+rn)/2)
    return t
"""


# In[16]:


sbcs = sorted(bcs, key=lambda x:x[1], reverse=True)
sA = sorted(A)

nb = 0
ans = 0
is_finish = False

for i in range(M):
    B, C = sbcs[i]
    
    for j in range(B):
        if nb < N and sA[nb] < C:
            ans += C
            nb += 1
        else:
            is_finish = True
            break
    
    if is_finish:
        break

if nb < N:
    ans += sum(sA[nb:])

print(ans)
        
"""
    if nb >= N: # nbがN以上になれば、終了
        break
    
    B, C = sbcs[i]
    las = nb+B-1
    las = las if las <N else N-1
    if sA[nb] >= C: # もしnb個目がC以上であれば、終了
        break
    elif sA[nb+B-1] <= C: #もしB個目が、C以下なら、B個目までをCにする
        sA[nb:nb+B] = [C]*B
        nb += B
    else: #nb個目がC未満で、nb+B-1個目がCより大きければ
        t = binary_search(sA[nb:nb+B], C) 
        t = t if nb+t < N else N-nb-1
        sA[nb:nb+t+1] = [C]*(t+1)
        nb += t+1
    
print(sum(sA))
"""


# In[ ]:
import math
N=int(input())
a = list(map(int, input().split()))

#------------最小公倍数---------------------
lcm = a[0]
for i in range(1, N):
    lcm = lcm * a[i] // math.gcd(lcm, a[i])
#------------------------------------------
b= []
for i in range(N):
    b.append(lcm //a[i])
ans=0


for j in range(len(b)):
    ans +=b[j]

ans%=1000000007

print(ans)

### FIXED CODE ###

import fractions
N=int(input())
a = list(map(int, input().split()))

#------------最小公倍数---------------------
lcm = a[0]
for i in range(1, N):
    lcm = lcm * a[i] // fractions.gcd(lcm, a[i])
#------------------------------------------
ans=0
for j in a:
    ans += lcm // j
print(ans % 1000000007)