import sys input = lambda : sys.stdin.readline().rstrip() sys.setrecursionlimit(max(1000, 10**9)) write = lambda x: sys.stdout.write(x+"\n") n = int(input()) a = list(map(int, input().split())) ans = 1 d = [None]*200 M = 10**9+7 def sub(k): if k>=200: return 1 else: if d[k] is not None: return d[k] else: v = 1 for num in range(1, k+1): v *= num v %= (M-1) val = pow(k, v, M) d[k] = val return val if 0 in a: print(-1) else: for k in a: ans *= sub(k) ans %= M print(ans%M)