import sys input = sys.stdin.readline def Matprod(A, B, mod, N): temp = [0] * N*N for i in range(N): for j in range(N): ij = i * N + j for k in range(N): temp[ij] += A[i*N+k] * B[k*N+j] temp[ij] %= mod return temp def Matpow_Linear(A, M, mod, N): Mat = [0] * N*N for i in range(N): Mat[i*N+i] = 1 while M: if M & 1: Mat = Matprod(Mat, A, mod, N) A = Matprod(A, A, mod, N) M >>= 1 return Mat N, W, K = map(int, input().split()) mod = 10 ** 9 + 7 A = list(map(int, input().split())) dp = [0] * (2 * W + 1) dp[0] = 1 for i in range(1, 2 * W + 1): for a in A: if i - a >= 0: dp[i] += dp[i - a] dp[i] %= mod f1 = dp[W] f2 = dp[2 * W] - f1**2 f2 %= mod F = [f1, f2, 1, 0] F = Matpow_Linear(F, K - 1, mod, 2) ans = F[0] * f1 + F[1] print(ans%mod)