#include<bits/stdc++.h>
using namespace std;
#define F(i,a,b) for(int i=a;i<=(b);++i)
#define F2(i,a,b) for(int i=a;i<(b);++i)
#define dF(i,a,b) for(int i=a;i>=(b);--i)
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define Debug debug("Passing [%s] in LINE %d\n",__FUNCTION__,__LINE__)
#define MN 1005
#define MK 25
#define ll long long
#define mod 1000000007
#define inf 0x3f3f3f3f
#define infll 0x3f3f3f3f3f3f3f3f
typedef pair<int,int> pii;
#define pb push_back
#define mkp make_pair
#define fi first
#define se second
inline int qpow(int b,int e) {int a=1;for(;e;e>>=1,b=(ll)b*b%mod)if(e&1)a=(ll)a*b%mod;return a;}
int n,k;
int a[MN];
int fac[MN],ifac[MN];
int f[MK][MN];
int main(){
	scanf("%d%d",&n,&k);
	F(i,1,k)scanf("%d",a+i);
	fac[0]=1;
	F(i,1,n)fac[i]=(ll)fac[i-1]*i%mod;
	ifac[n]=qpow(fac[n],mod-2);
	dF(i,n,1)ifac[i-1]=(ll)ifac[i]*i%mod;
	f[0][0]=1;
	F(j,1,k){
		F(i,0,n){
			F(x,0,min(n-i,a[j])){
				f[j][i+x]=(f[j][i+x]+(ll)f[j-1][i]*ifac[x]%mod*fac[n-x]%mod*ifac[n-a[j]]%mod*ifac[a[j]-x])%mod;
			}
		}
//		F(i,0,n)printf("f[%d][%d]=%d\n",j,i,f[j][i]);
	}
	printf("%lld\n",(ll)fac[n]*f[k][n]%mod);
	return 0;
}