#include <bits/stdc++.h>
using namespace std;
long long int mem[105][100005];
vector<long long int> candies;
long long int dp(long long int i, long long int k) {
  if (i == 0) {
    if (k <= candies[0]) {
      return 1;
    } else {
      return 0;
    }
  }
  if (mem[i][k] != -1) {
    return mem[i][k];
  }
  long long int x = 0;
  for (long long int j = 0; j <= candies[i]; j++) {
    if (k - j >= 0) x = (x + dp(i - 1, k - j)) % 1000000007;
  }
  mem[i][k] = x;
  return x;
}
int main() {
  long long int n, k;
  cin >> n >> k;
  memset(mem, -1, sizeof(mem));
  for (long long int i = 0; i < n; i++) {
    long long int x;
    cin >> x;
    candies.push_back(x);
  }
  long long int ans = dp(n - 1, k);
  cout << ans;
  return 0;
}
