n, k = map(int, input().split())
a = list(map(int, input().split()))

mod = 10**9 + 7

# dp[i][k]: i人目まで見たときにk個アメを配った場合の数
dp = [[0] * (k+1) for _ in range(n+1)]

# 始点は1、それ以外は0で初期化
dp[0][0] = 1

for i in range(1, n+1):
    # dp[i-1]の累積和をループを回しながら計算する
    # 累積和は0を含んだ0-basedの半開区間でかく (1-indexed)
    cum = [0] * (k+2)
    for j in range(k+1):
        cum[j+1] = (cum[j] + dp[i-1][j]) % mod
        dp[i][j] += cum[j+1] - cum[max(0, j-a[i-1])]
        dp[i][j] %= mod

print(dp[n][k])