#include using namespace std; using ll = long long; using ld = long double; using vi = vector; using vvi = vector; using vb = vector; using vvb = vector; using vl = vector; using vvl = vector; using vd = vector; using vvd = vector; #define REP(i,n) for(ll i = 0; i < (n); ++i) #define ALL(c) (c).begin(), (c).end() #define FOR(i,s,e) for (ll i = s; i < (ll)e; i++) #define TEN(x) ((ll)1e##x) ll inverse(ll v, ll mod) { ll a = v, b = mod, x = 1, y = 0; while (b) { ll t = a / b; swap(a -= t * b, b); swap(x -= t * y, y); } return (x % mod + mod) % mod; } ll nCr(ll n,ll r, ll mod){ if(n < r) return 0; r = min(r,n-r); ll ret = 1; REP(i, r) { (ret *= n - i) %= mod; (ret *= inverse(i + 1, mod)) %= mod; } return ret; } int main() { #ifdef _WIN32 ifstream cin("sample.in"); ofstream cout("sample.out"); #endif cin.tie(0); // cinとcoutの連携を切る ios_base::sync_with_stdio(false); cout << fixed << setprecision(50); ll m; cin >> m; vl h; { ll tmp; while (cin >> tmp) h.push_back(tmp); } if (h[0] == 0) { cout << 1 << endl; return 0; } ll sum = -1; REP(i, h.size()) sum += h[i] + 1; ll diff = m - sum; if (diff < 0) { cout << "NA" << endl; return 0; } ll mod = TEN(9) + 7; cout << nCr(diff + h.size(), diff, mod) << endl; return 0; }