#include <bits/stdc++.h>
using namespace std;
int a[110], k, n;
long long int dp[110][100010];
bool been[110][100010];
long long int f(int i, int s) {
  if (s == 0 && i == n) return 1;
  if (i == n) return 0;
  if (been[i][s]) return dp[i][s];
  been[i][s] = true;
  long long int k = 0;
  for (int j = 0; j <= a[i]; j++) {
    if (s - j < 0) break;
    k = (k % 1000000007 + f(i + 1, s - j) % 1000000007) % 1000000007;
  }
  return dp[i][s] = k;
}
int main() {
  memset(been, false, sizeof(been));
  cin >> n >> k;
  for (int i = 0; i < n; i++) cin >> a[i];
  cout << f(0, k) << '\n';
  return 0;
}
