#include <bits/stdc++.h>
#define MAX_N 105
#define mo 1000007
using namespace std;
int n, m, a[MAX_N];
int ans, r[MAX_N][MAX_N];
int dfs(int k, int s) {
if (s == m)
return 1;
if (k > n || s > m)
return 0;
if (r[k][s])
return r[k][s];
int ans = 0;
for (int i = 0; i <= a[k]; i++)
ans = (ans + dfs(k + 1, s + i)) % mo;
return r[k][s] = ans;
}
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++)
cin >> a[i];
cout << dfs(1, 0);
return 0;
}