#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
int n, m, t, k;
int c[((int)2e5 + 5)];
map<int, int> dp[105];
void add(int& a, int b) {
  a += b;
  if (a > ((int)1e9 + 7)) a -= ((int)1e9 + 7);
  if (a < 0) a += ((int)1e9 + 7);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> k;
  for (int i = 0; i < n; ++i) {
    cin >> c[i];
  }
  for (int i = 0; i <= c[0]; ++i) dp[0][i] = 1;
  for (int i = 1; i < n; ++i)
    for (int j = 0; j <= c[i]; ++j)
      for (auto l : dp[i - 1]) add(dp[i][l.first + j], l.second);
  cout << dp[n - 1][k] << "\n";
  return 0;
}
