You are given an integer *m* as a product of integers *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ... *a*<sub class="lower-index">*n*</sub> <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/cf060eec22f7a6ddd13992efe2ebf6d08fde945a.png" style="max-width: 100.0%;max-height: 100.0%;"/>. Your task is to find the number of distinct decompositions of number *m* into the product of *n* ordered positive integers.

Decomposition into *n* products, given in the input, must also be considered in the answer. As the answer can be very large, print it modulo 1000000007 (10<sup class="upper-index">9</sup> + 7).
The first line contains positive integer *n* (1 ≤ *n* ≤ 500). The second line contains space-separated integers *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>).
def primfacs(n):
    factors = []
    i = 2
    while i * i <= n:  # перебираем простой делитель
        while n % i == 0:  # пока N на него делится
            b = 0
            while n % i == 0:
                n //= i
                b += 1
            factors.append([i, b])
            i += 1

        i += 1
        # возможно, в конце N стало большим простым числом,
        # у которого мы дошли до корня и поняли, что оно простое
        # его тоже нужно добавить в разложение
    if n > 1:
        factors.append([n, 1])
    return factors
def comb(N,k):
    if (k > N) or (N < 0) or (k < 0):
        return 0
    N,k = map(int, (N,k))
    top = N
    val = 1
    while (top > (N-k)):
        val *= top
        top -= 1
    n = 1
    while (n < k+1):
        val //= n
        n += 1
    return val

prime = []
n = int(input())
a = list(map(int, input().split()))
u = 1
for i in a:
    u *= i

prime = primfacs(u)
ans = 0
for i in range(len(prime)):
    ans += comb(n - 1 + prime[i][1], n - 1)
if n == 1:
    print(1)
else:
    print(ans)
