#include<bits/stdc++.h>
#define int long long
#define maxn 1000005
#define mod 10007
#define lc rt<<1
#define rc rt<<1|1
#define fq(i,a,b) for(int i=a;i<=b;i++)
#define fp(i,a,b) for(int i=a;i<b;i++)
#define frq(i,a,b) for(int i=a;i>=b;i--)
#define frp(i,a,b) for(int i=a;i>b;i--)
using namespace std;
int n,m;
int a[maxn];
int tims[maxn],inv[maxn];
int qpow(int x,int y) {
int ans=1;
while(y) {
if(y&1) ans=ans%mod*x%mod;
x=x%mod*x%mod,y>>=1;
}
return ans;
}
int C(int x,int y) { return tims[x]%mod*inv[y]%mod*inv[x-y]%mod; }
signed main(){
int sum=0;
ios::sync_with_stdio(false);cin.tie(0);
cin>>n>>m; fq(i,1,m) {cin>>a[i];sum+=a[i];}
tims[0]=1;
fq(i,1,maxn) tims[i]=tims[i-1]*i%mod;
fq(i,1,maxn) inv[i]=qpow(tims[i],mod-2)%mod;
int ans=1;
fq(i,1,m) ans=ans%mod*C(n,a[i])%mod,n-=a[i];
if(n<0) cout<<0;
else cout<<ans;
return 0;
}
前两个点wa了 @wuhupai @柳易辰 @New_hope @shenzirui