n,k = map(int,input().split())
a = list(map(int,input().split()))
mod = 1000000007
## dp[i][j] i番目までの子供にj個の飴を分け与える通り数の""jについての累積和""

dp = [[0]*(k+2) for i in range(n)]
for j in range(1,k+2):
  if j-1 <= a[0] : 
    dp[0][j] = dp[0][j-1] + 1
  else:
    dp[0][j] = dp[0][j-1] + 0

for i in range(1,n):
  for j in range(k+2):
      dp[i][j] = (dp[i][j-1] + dp[i-1][j]-dp[i-1][max(j-a[i]-1,0)])%mod

print((dp[n-1][k+1]-dp[n-1][k])%mod)

## 累積和を使わない

#dp = [[0]*(k+1) for i in range(n)]
#
#for j in range(k+1):
#  if j <= a[0] : 
#    dp[0][j] = 1
#  else:
#    dp[0][j] = 0
#for i in range(1,n):
#  for j in range(k+1):
#    for jj in range(max(0,j-a[i]),j+1): 
#      dp[i][j] += dp[i-1][jj]
#print(dp[n-1][k]%1000000007)