import sys
readline = sys.stdin.readline

# dp[i][j] = i番目の子供まででj個の飴を配る場合の数
# dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1] + ... + dp[i - 1][j - A[i]]
# 累積和を使える

N,K = map(int,readline().split())
A = list(map(int,readline().split()))
DIV = 10 ** 9 + 7

dp = [[0] * (K + 1) for i in range(N + 1)]
dp[0][0] = 1
sdp = [[0] * (K + 1) for i in range(N + 1)]
for i in range(len(sdp[0])):
  sdp[0][i] = 1

for i in range(1, N + 1):
  for j in range(K + 1):
    # dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1] + ... + dp[i - 1][j - A[i]]
    # 左端をj - A[i], 右端をjとする累積和
    dp[i][j] = sdp[i - 1][j]
    if j - A[i - 1] - 1 >= 0:
      dp[i][j] -= sdp[i - 1][j - A[i - 1] - 1]
    dp[i][j] %= DIV
  sdp[i][0] = dp[i][0]
  for j in range(1, K + 1):
    sdp[i][j] = sdp[i][j - 1] + dp[i][j]
    sdp[i][j] %= DIV

print(dp[N][K])
