MOD = 10**9 + 7

def mod_pow(a, b, mod):
    a %= mod
    result = 1
    while b > 0:
        if b % 2 == 1:
            result = (result * a) % mod
        a = (a * a) % mod
        b //= 2
    return result

def main():
    import sys
    input = sys.stdin.read().split()
    N = int(input[0])
    A = list(map(int, input[1:N+1]))
    
    # Compute product2: product of A_i^sum_{j>i} A_j mod MOD
    sum_j = [0] * (N + 1)
    for i in range(N-1, -1, -1):
        sum_j[i] = (sum_j[i+1] + A[i]) % (MOD-1)  # Using MOD-1 for Fermat's little theorem
    
    product2 = 1
    for i in range(N):
        s = sum_j[i+1]
        if s == 0:
            continue
        a = A[i]
        product2 = (product2 * mod_pow(a, s, MOD)) % MOD
    
    # Find the minimum term
    # Sort the array and check first 200 elements
    sorted_A = sorted(A)
    min_term = None
    K = 200
    for i in range(min(K, len(sorted_A))):
        for j in range(i+1, min(i+1 + K, len(sorted_A))):
            a = sorted_A[i]
            b = sorted_A[j]
            term = (a + b) * mod_pow(a, b, MOD)
            if min_term is None or term < min_term:
                min_term = term
    
    original_A = A
    for i in range(len(original_A)):
        for j in range(i+1, len(original_A)):
            a = original_A[i]
            b = original_A[j]
            term = (a + b) * mod_pow(a, b, MOD)
            if term == min_term:
                min_val = term
                break
        else:
            continue
        break
    
    min_val_mod = min_val % MOD
    denominator = min_val_mod
    
    # Compute product1 and product2 combined
    product_total = 1
    for i in range(len(original_A)):
        a = original_A[i]
        for j in range(i+1, len(original_A)):
            b = original_A[j]
            term = ((a + b) * mod_pow(a, b, MOD)) % MOD
            product_total = (product_total * term) % MOD
    
    # Compute inverse of denominator
    inv_denominator = mod_pow(denominator, MOD-2, MOD)
    result = (product_total * inv_denominator) % MOD
    print(result)

if __name__ == '__main__':
    main()