MOD = 10**9 + 7 def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]) idx += 1 A = list(map(int, input[idx:idx+N])) idx += N # Compute P2 suffix_sum = [0] * (N + 1) for i in range(N-1, -1, -1): suffix_sum[i] = (A[i] + suffix_sum[i+1]) % (MOD-1) # Fermat's little theorem for exponents P2 = 1 for i in range(N): base = A[i] exponent = suffix_sum[i+1] if exponent == 0: P2 = (P2 * 1) % MOD continue # Compute base^exponent mod MOD exponent_mod = exponent % (MOD-1) if base != 0 else 0 power = pow(base, exponent_mod, MOD) P2 = (P2 * power) % MOD # Find min_val min_val = float('inf') min_i = A.index(min(A)) for j in range(min_i + 1, N): a_i = A[min_i] a_j = A[j] term = (a_i + a_j) * (pow(a_i, a_j, MOD)) term %= MOD if term < min_val: min_val = term # Compute P1 P1 = 1 for i in range(N): for j in range(i + 1, N): s = (A[i] + A[j]) % MOD P1 = (P1 * s) % MOD # Compute M if min_val == 0: print(0) return M = (P1 * P2) % MOD M = (M * pow(min_val, MOD-2, MOD)) % MOD # Modular inverse print(M) if __name__ == '__main__': main()