There are *n* boxes with colored balls on the table. Colors are numbered from 1 to *n*. *i*-th box contains *a*<sub class="lower-index">*i*</sub> balls, all of which have color *i*. You have to write a program that will divide all balls into sets such that:
 -  each ball belongs to exactly one of the sets, -  there are no empty sets, -  there is no set containing two (or more) balls of different colors (each set contains only balls of one color), -  there are no two sets such that the difference between their sizes is greater than 1. 
Print the minimum possible number of sets.
The first line contains one integer number *n* (1 ≤ *n* ≤ 500).

The second line contains *n* integer numbers *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ... , *a*<sub class="lower-index">*n*</sub> (1 ≤ *a*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">9</sup>).
In the first example the balls can be divided into sets like that: one set with 4 balls of the first color, two sets with 3 and 4 balls, respectively, of the second color, and two sets with 4 balls of the third color.
3
4 7 8
5
2
2 7
4
1
1
1
1
1000000000
1
2
1000000000 1
500000001
2
9 6
5
2
948507270 461613425
2789
5
8 7 4 8 3
8
5
11703 91351 99 16279 50449
1701
20
3 2 1 1 1 2 2 2 3 3 1 1 3 2 3 3 2 3 3 2
28
20
895 8894 6182 5852 9830 7562 8854 4004 5909 4979 6863 2987 3586 1319 513 5496 9543 9561 6590 5063
2670
200
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
200
200
1 1 1 2 1 1 2 1 2 2 2 1 2 2 1 2 1 2 2 1 2 1 1 1 1 2 2 2 2 2 2 2 2 1 2 1 2 2 2 2 2 2 1 1 2 1 1 2 1 2 2 1 2 1 1 2 2 2 2 1 2 2 2 2 2 1 2 2 1 2 2 1 2 1 1 1 2 2 2 2 2 1 2 1 1 2 2 1 2 1 2 1 2 1 1 2 1 1 1 2 2 1 2 1 2 2 2 1 1 1 2 1 2 1 2 1 1 1 2 1 2 1 2 1 2 1 2 2 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 2 1 1 1 2 1 2 1 2 1 1 2 2 2 2 2 2 2 1 1 1 2 2 2 1 1 1 1 2 2 2 1 1 2 2 2 2 1 1 2 2 1 2 1 1 2 1 1 1 1 1 2 1
200
200
1 2 4 10 5 8 1 10 9 10 1 9 5 5 3 10 4 7 7 1 5 10 1 6 7 3 9 3 5 8 8 9 7 3 1 5 6 7 3 3 1 4 9 2 8 7 2 10 2 1 10 9 6 1 9 5 3 5 9 3 3 2 4 9 5 9 4 8 5 6 10 1 3 10 8 6 10 10 4 6 8 4 10 7 5 2 6 6 8 8 8 10 3 2 4 5 10 2 2 10 4 5 3 1 8 10 8 5 6 4 9 10 8 10 8 6 3 1 6 4 7 4 10 10 6 7 1 1 2 5 2 6 9 10 1 5 8 3 10 8 4 4 2 6 4 3 6 10 3 1 2 9 3 8 7 5 4 10 9 7 8 3 3 1 1 5 2 7 9 7 1 10 4 3 4 2 8 8 6 5 1 10 3 10 6 9 4 2 6 3 7 5 9 10 10 1 2 4 10 6
610
10
1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000
10
2
1000000000 999999999
2
2
999999999 1000000000
2
2
500000000 999999998
3
10
1 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000
4500000001
import math,string,itertools,fractions,heapq,collections,re,array,bisect,sys,random,time

sys.setrecursionlimit(10**7)
inf = 10**20
mod = 10**9 + 7

def LI(): return [int(x) for x in sys.stdin.readline().split()]
def LF(): return [float(x) for x in sys.stdin.readline().split()]
def LS(): return sys.stdin.readline().split()
def I(): return int(sys.stdin.readline())
def F(): return float(sys.stdin.readline())
def S(): return input()

def main():
    n = I()
    a = LI()

    def f(t):
        for c in a:
            if c == t-1:
                continue
            d = c//t
            e = c - t*d
            if d<e:
                return False
        return True

    ma = min(a)
    t = 1
    if f(ma+1):
        t = ma
    else:
        for i in range(1,ma+1):
            if ma%i == 0 and f(ma//i+1):
                t = ma//i+1
                break
            if f(ma//i):
                t = i
                break
    r = 0
    for c in a:
        r += c//t

    return r


print(main())
