N, K = list(map(int, input().split()))
a = list(map(int, input().split()))

MOD = 10 ** 9 + 7
DP = [[0] * (K + 1) for _ in range(N)]

for i in range(a[0] + 1):
  DP[0][i] = 1

L = [0] * (K + 1)
for i in range(1, N):
  L[0] = 1
  for j in range(1, K + 1):
    L[j] = (DP[i - 1][j] + L[j - 1]) % MOD
  x = a[i]
  for j in range(K + 1):
    if j <= x:
      DP[i][j] = L[j]
    else:
      DP[i][j] = L[j] - L[j - x - 1]
      while DP[i][j] < MOD:
        DP[i][j] += MOD

print(DP[N - 1][K] % MOD)