using namespace std;
int m, n;
int a[100000];
long long f[10000][10000];
long long fun(int x, int k) {
if (x == n + 1)return 0;
if (k > m)return 0;
if (k == m)return 1;
if (f[x][k])return f[x][k];
long long ans = 0;
for (int i = 0; i <= a[x]; i++) {
ans = (ans + fun(x + 1, k + i)) % 1000007;
}
f[x][k] = ans;
return ans;
}
int main() {
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
printf("%lld", fun(1, 0));
}