import sys
def solve():
input_data = sys.stdin.read().split()
if not input_data:
return
n = int(input_data[0])
s_target = int(input_data[1])
k_limit = int(input_data[2])
coins = list(map(int, input_data[3:]))
mod = 10**9 + 7
dp = [[0] * (s_target + 1) for _ in range(k_limit + 1)]
dp[0][0] = 1
# ПРАВИЛЬНЫЙ ПОРЯДОК: сначала фиксируем монету
for coin in coins:
# Затем итерируемся по количеству монет и сумме
for k in range(1, k_limit + 1):
for s in range(coin, s_target + 1):
dp[k][s] = (dp[k][s] + dp[k-1][s - coin]) % mod
print(dp[k_limit][s_target])
if __name__ == "__main__":
solve()