#include <bits/stdc++.h>
using namespace std;
long long int a[(int)105], dp[(int)105][(int)1e5 + 5],
    prefix[(int)105][(int)1e5 + 5];
void init(int n, int k) {
  int i, j;
  for (j = 0; j < (int)1e5 + 5; j++) prefix[0][j] = 1;
  for (i = 1; i <= n; i++) {
    for (j = 0; j <= k; j++) {
      if (j - a[i] > 0)
        dp[i][j] = (prefix[i - 1][j] % ((int)1e9 + 7) -
                    prefix[i - 1][j - a[i] - 1] % ((int)1e9 + 7)) %
                   ((int)1e9 + 7);
      else
        dp[i][j] = prefix[i - 1][j] % ((int)1e9 + 7);
      prefix[i][j] = dp[i][j] % ((int)1e9 + 7);
      if (j > 0)
        prefix[i][j] = (prefix[i][j] % ((int)1e9 + 7) +
                        prefix[i][j - 1] % ((int)1e9 + 7)) %
                       ((int)1e9 + 7);
    }
  }
}
int main() {
  int n, k, i;
  scanf("%d%d", &n, &k);
  for (i = 0; i < n; i++) scanf("%lld", &a[i + 1]);
  init(n, k);
  printf("%lld\n", dp[n][k]);
}
