#include #include using namespace std; #define int long long const int kMOD = 1000 * 1000 * 1000 + 7; const int kMAX_M = 1000010; int M; vector H; int factorial(int n) { int res = 1; for (int i = 0; i < n; i++) { res *= (n - i); res %= kMOD; } return res; } // a^b (mod p) を計算する int ModPow(int a, int b, int p) { if (b == 0) return 1; else if (b % 2 == 0) { int d; d = ModPow(a, b / 2, p); return (d * d) % p; } else { return (a * ModPow(a, b - 1, p)) % p; } } void Solve() { int use = 0, free; if (H[0] == 0) { cout << 1 << endl; return; } for (int i = 0; i < H.size(); i++) { use += H[i]; } free = M - use - (H.size() - 1); if (free < 0) { cout << "NA" << endl; return; } int ans = factorial(free + H.size()); ans = (ans * ModPow(factorial(free), kMOD - 2, kMOD)) % kMOD; ans = (ans * ModPow(factorial(H.size()), kMOD - 2, kMOD)) % kMOD; cout << ans << endl; } signed main() { cin.tie(0); ios::sync_with_stdio(false); cin >> M; int h; while (cin >> h, !cin.eof()) { H.push_back(h); } Solve(); return 0; }