#include <bits/stdc++.h>
using namespace std;
long long int dp[100100][110];
long long int find(long long int i, long long int n, long long int a[],
                   long long int k) {
  if (i == n) {
    if (k != 0) {
      return 0;
    }
    return 1;
  }
  if (dp[k][i] != -1) {
    return dp[k][i];
  }
  long long int ways = 0;
  for (long long int j = a[i]; j >= 0; j--) {
    if ((k - j) >= 0) {
      ways = (ways % 1000000007 + find(i + 1, n, a, k - j) % 1000000007) %
             1000000007;
    }
  }
  return dp[k][i] = ways;
}
int main() {
  long long int n, k;
  cin >> n >> k;
  long long int a[n];
  for (long long int(i) = (0); (i) < (n); (i)++) {
    cin >> a[i];
  }
  for (long long int(i) = (0); (i) < (k + 2); (i)++) {
    for (long long int(j) = (0); (j) < (n + 2); (j)++) {
      dp[i][j] = -1;
    }
  }
  cout << find(0, n, a, k);
}
