#include <bits/stdc++.h>
int M = 1e9 + 7;
int dp[100][100000];
using namespace std;
int util(int i, int sum, int n, int k, vector<int>& v) {
  if (sum > k) return 0;
  if (i == n) {
    if (sum == k)
      return 1;
    else
      return 0;
  }
  if (dp[i][sum] != -1) return dp[i][sum];
  int ans = 0;
  for (int j = 0; j <= v[i]; j++)
    ans = (ans + util(i + 1, sum + j, n, k, v)) % M;
  return dp[i][sum] = ans;
}
int main() {
  int n, k;
  cin >> n >> k;
  vector<int> v(n);
  memset(dp, -1, sizeof(dp));
  for (int i = 0; i < n; i++) cin >> v[i];
  cout << util(0, 0, n, k, v) << endl;
  return 0;
}
