#include<bits/stdc++.h>

using namespace std;

long long mod_pow(long long a,long long b,long long mod){
	long long res=1,c=a;
	while(b){
		if(b&1) res=res*c%mod;
		c=c*c%mod;
		b/=2;
	}
	return res;
}

long long inv(long long a,long long mod){
	long long b=mod,p=1,q=0;
	while(b){
		long long c=a/b,d=a;
		a=b;
		b=d%b;
		d=p;
		p=q;
		q=d-c*q;
	}
	return (p+mod)%mod;
}
int fs=505050;
vector<long long> fact(fs),ifact(fs);
long long binom(int a,int b,long long mod){
	if(a<b) return 0;
	return fact[a]*ifact[b]%mod*ifact[a-b]%mod;
}

vector<long long> conv(vector<long long> &a,vector<long long> &b,long long mod){
	int n=a.size()+b.size();
	n--;
	vector<long long> res(n);
	for(int i=0;i<a.size();i++){
		for(int j=0;j<b.size();j++){
			res[i+j]=(res[i+j]+a[i]*b[j]%mod)%mod;
		}
	}
	return res;
}
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	
	int n,k;
	cin >> n >> k;
	vector<long long> a(k);
	for(int i=0;i<k;i++) cin >> a[i];
	
	long long mod=1000000007;
	
	fact[0]=1;
	for(int i=1;i<fs;i++) fact[i]=fact[i-1]*i%mod;
	ifact[fs-1]=inv(fact[fs-1],mod);
	for(int i=fs-1;i>0;i--) ifact[i-1]=ifact[i]*i%mod;
	
	long long res=0;
	vector<long long> cur(1,1);
	for(int i=0;i<k;i++){
		vector<long long> te(n+1);
		for(int j=0;j<=n;j++){
			if(a[i]<j) break;
			long long v=binom(n-j,a[i]-j,mod)*ifact[j]%mod;
			te[j]=v;
		}
		cur=conv(cur,te,mod);
		if(cur.size()>=(n+4)) cur.resize(n+4);
	}
	cout << cur[n]*fact[n]%mod << "\n";
	return 0;
}