using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static long NN => long.Parse(ReadLine()); static long[] NList => ReadLine().Split().Select(long.Parse).ToArray(); public static void Main() { Solve(); } static void Solve() { var c = NList; var (n, k) = (c[0], c[1]); var a = NList; var mod = 1_000_000_007; var dp = new long[20001]; dp[10000] = 1; for (var i = 0; i < n; ++i) { var ndp = (long[]) dp.Clone(); for (var j = 0; j < dp.Length; ++j) { var next = a[i] - k + j; if (next < 0 || next >= dp.Length) continue; ndp[next] = (ndp[next] + dp[j]) % mod; } dp = ndp; } var ans = 0L; for (var i = 10000; i < dp.Length; ++i) ans = (ans + dp[i]) % mod; WriteLine((ans - 1 + mod) % mod); } }