#include<bits/stdc++.h>usingnamespace std;typedeflonglong ll;typedef pair<int,int>PII;constint N=1e6+10;constint MOD =9901;constint INF=0X3F3F3F3F;constint dx[]={-1,1,0,0,-1,-1,+1,+1};constint dy[]={0,0,-1,1,-1,+1,-1,+1};constint M =1e9+7;
ll a[N], b[N];
ll qmi(ll x, ll y, ll p){
ll res =1;while(y){if(y &1) res = res * x % p;
x = x * x % p;
y >>=1;}return res;}
ll C(ll x, ll y, ll p){
ll r1 =1, r2 =1;for(ll i = y - x +1; i <= x; i ++) r1 *= i % p;for(ll i =1; i <= y; i ++) r2 *= i % p;return r1 *qmi(r2, p -2, p);}//隔板法intmain(){
ll n, m;
cin >> n >> m;
ll s =0;for(int i =1; i <= n; i ++){
cin >> a[i];
s =max(s, a[i]);}
ll res =1;//阶乘可以初始化
b[0]=1;for(ll i =1; i <= s + m; i ++) b[i]=(b[i -1]* i)% M;for(int i =1; i <= n; i ++){
ll zi = b[a[i]+ m]% M;
ll ny =qmi(b[m]* b[a[i]]% M, M -2, M)% M;
res =(res * zi % M * ny % M);}
cout << res << endl;return0;}