#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int n, w;
long long dp[N][2];
long long add(long long a, long long b) { return (a + b) % 1000000007; }
long long sub(long long a, long long b) {
  return (a - b + 1000000007) % 1000000007;
}
int main() {
  scanf("%d%d", &n, &w);
  for (int i = 0; i <= w; i++) dp[i][0] = 1;
  for (int i = 1; i <= n; i++) {
    int a;
    scanf("%d", &a);
    for (int k = 0; k <= w; k++) {
      if (k <= a)
        dp[k][1] = dp[k][0];
      else
        dp[k][1] = sub(dp[k][0], dp[k - a - 1][0]);
    }
    dp[0][0] = dp[1][0];
    for (int k = 1; k <= w; k++) dp[k][0] = add(dp[k - 1][0], dp[k][1]);
  }
  printf("%lld", dp[w][1]);
  return 0;
}
