#include <iostream>
#include <vector>
using namespace std;

typedef long long ll;

const int MOD = 1000007;

int main(){
    int n, m;
    cin >> n >> m;
    vector<int> a(n);
    for(auto &x: a) cin >> x;
    
    // dp[j] 表示当前总数为 j 的方案数
    vector<int> dp(m+1, 0);
    dp[0] = 1;
    
    for(int i=0; i<n; ++i){
        // 创建一个新的临时数组来存储更新后的值
        vector<int> new_dp(m+1, 0);
        for(int j=0; j<=m; ++j){
            if(dp[j] == 0) continue;
            // 尝试摆放 k 盆当前类型的花
            for(int k=0; k<=a[i] && j + k <= m; ++k){
                new_dp[j + k] = (new_dp[j + k] + dp[j]) % MOD;
            }
        }
        dp = new_dp;
    }
    
    cout << dp[m] % MOD;
    return 0;
}
