#include<bits/stdc++.h>
#define fo(i,a,b) for(int i=(a);i<=(b);++i)
#define rv(i,a,b) for(int i=(a);i>=(b);--i)
#define P pair<int,int>
#define pb push_back
#define lb(x) (x&(-x))
#define ALL(x) x.begin(),x.end()
#define SZ(x) ((int)x.size())
using namespace std;
typedef long long ll;
const int M = 120000;
const int inf = 0x3f3f3f3f;
int n,m,k;
int a[M];
int fac[M];
int inv[M];
ll dp[25][M]={0};
const int md=1e9+7;
void ini() {
	fac[0] = inv[0] = inv[1] = 1;
	fo(i,2,M-1) {
		inv[i] = 1ll*(md-md/i)*inv[md%i]%md;
	}
	fo(i,1,M-1) {
		fac[i] = 1ll*fac[i-1]*i%md;
		inv[i] = 1ll*inv[i-1]*inv[i]%md;
	}
}
int C(int n,int m){
	if(m>n) return 0;
	return 1ll*fac[n]*inv[n-m]%md*inv[m]%md;
}
int main() {
	cin>>n>>k;
	fo(i,1,k) cin>>a[i];
	ini();
	dp[0][0]=1;
	fo(i,1,k) {
		fo(x,0,a[i]){
			ll mul=1ll*C(n-x,a[i]-x)*inv[x]%md;
			fo(j,0,n-x){
				dp[i][j+x]=(dp[i][j+x]+dp[i-1][j]*mul)%md;
			}
		}
	}
	cout<<dp[k][n]*fac[n]%md<<endl;
	return 0;
}
