#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int dr8[] = {0, 0, 1, -1, 1, 1, -1, -1};
int dc8[] = {1, -1, 0, 0, -1, 1, -1, 1};
int dr4[] = {0, 1, -1, 0};
int dc4[] = {1, 0, 0, -1};
long long int dp[105][N], n, k, a[105];
long long int calc(int i, int sum) {
  if (sum > k) return 0;
  if (i == n && sum == k)
    return 1;
  else if (i == n)
    return 0;
  if (dp[i][sum] != -1) return dp[i][sum];
  long long int add = 0;
  for (int j = 0; j <= a[i]; j++) {
    add = (add + calc(i + 1, sum + j)) % 1000000007;
  }
  return dp[i][sum] = add;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> n >> k;
  memset(dp, -1, sizeof dp);
  for (int i = 0; i < n; i++) cin >> a[i];
  cout << calc(0, 0);
}
