#include<bits/stdc++.h>
#define endl "\n"
#define ll long long
#define N 100086
using namespace std;
const int MOD=1e6+7;
int n,m,cnt[N],dp[N];
inline int read();
int main(){
dp[0]=1;
n=read();m=read();
for(int i=1;i<=n;i++) cnt[i]=read();
for(int i=1;i<=n;i++){
int pow=1;
while(cnt[i]>pow){
for(int j=m;j>=pow;j--){
dp[j]=(dp[j-pow]+dp[j])%MOD;
}
cnt[i]-=pow;
pow*=2;
}
for(int j=m;j>=cnt[i];j--){
dp[j]=(dp[j-cnt[i]]+dp[j])%MOD;
}
}
cout<<(dp[m]%MOD)<<endl;
return 0;
}
inline int read(){
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9') {if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9') {x=x*10+ch-48;ch=getchar();}
return x*f;
}