from random import randint import sys from sys import setrecursionlimit from bisect import bisect_left from collections import deque, defaultdict as dd from heapq import * from itertools import combinations setrecursionlimit(1<<21) if hasattr(sys, "set_int_max_str_digits"): sys.set_int_max_str_digits(0) MOD = 1000000007 def main(): _ = int(input()) a = [int(x) for x in input().split()] if min(a)==0: print("-1") return elif max(a)>=4: print(MOD) return res = 1 f = [1,1,2,6] for v in a: res *= pow(v, f[v]) if res > MOD: print(MOD) print(MOD%res) if __name__ == "__main__": main()