M = int(input()) Hs = list(map(int, input().split())) def inv(a, m): ''' a * b = 1 (mod m) となる b を返す。 m は素数とする。 b = a**(m-2) (mod m) となることが知られており、これを使って計算している。 ''' n = m - 2 b = bin(n)[2:][-1::-1] ret = 1 tmp = a if b[0] == '1': ret = a for bi in b[1:]: tmp *= tmp tmp %= m if bi == '1': ret *= tmp ret %= m return ret def nCb_mod_p(n, b, mod): ''' nCb % mod を返す。 mod が素数で、mod > n のときのみ有効。 ''' if b > n - b: b = n - b num = 1 for k in range(n, n-b, -1): num *= k num %= mod den = 1 for k in range(1, b+1): den *= k den %= mod r = inv(den, mod) return (num * r) % mod def solve(M, Hs): if sum(Hs) == 0: return 1 mod = 10**9 + 7 n = len(Hs) minM = sum(Hs) + n - 1 if M < minM: return 'NA' if M == minM: return 1 r = M - minM return nCb_mod_p(n + r, r, mod) print(solve(M, Hs))