#include <bits/stdc++.h>
using namespace std;
long long int N, k;
long long int arr[105];
long long int dp[100005][102];
long long int get(long long int a, long long int n) {
  if (n == N)
    if (a <= arr[n])
      return 1;
    else
      return 0;
  if (dp[a][n] == -1) {
    if (a < 0) return 0;
    long long int ans = 0;
    for (long long int i = 0; i < arr[n] + 1; i++) {
      ans += get(a - i, n + 1);
      ans %= 1000000007;
    }
    dp[a][n] = ans % 1000000007;
  }
  return dp[a][n];
}
int32_t main() {
  memset(dp, -1, sizeof(dp));
  cin >> N >> k;
  for (long long int i = 0; i < N; i++) cin >> arr[i + 1];
  long long int ans = get(k, 1);
  cout << ans << '\n';
}
