#include #include #include #include using namespace std; #define REP(i,s,e) for (i = s; i <= e; i++) #define rep(i,n) REP (i,0,(int)(n)-1) #define RREP(i,s,e) for (i = s; i >= e; i--) #define rrep(i,n) RREP (i,(int)(n)-1,0) const int INF = 1e8; const int MOD = 1e9+7; typedef long long ll; int h[500000]; ll frac[1000001]; int modinv(ll x) { int n = MOD-2; ll ret = 1; while (n) { if (n%2) { ret *= x; ret %= MOD; } x *= x; x %= MOD; n /= 2; } return ret; } int main(void) { int i, m, n; scanf("%d",&m); n = 0; while (scanf("%d",&h[n++]) != EOF); n--; frac[0] = 1; rep (i,1000000) frac[i+1] = frac[i] * (i+1) % MOD; m -= n - 1; rep (i,n) if (h[i] > 0) m -= h[i] - 1; int ans; if (m < n) { cout << "NA" << endl; return 0; } if (h[0] != 0) ans = frac[m] * modinv(frac[n]) % MOD * modinv(frac[m-n]) % MOD; else ans = 1; cout << ans << endl; return 0; }