def main(): MOD = 10**9+7 N, K = map(int, input().split()) A = list(map(int, input().split())) B = list(map(lambda x: x - K, A)) offset = 10**4 dp = [[0] * (2*offset + 1) for _ in range(N + 1)] dp[0][offset] = 1 for i in range(N): b = B[i] for j in range(2*offset + 1): if dp[i][j] == 0: continue # pick しない dp[i + 1][j] += dp[i][j] if dp[i + 1][j] >= MOD: dp[i + 1][j] -= MOD # pick する dp[i + 1][j + b] += dp[i][j] if dp[i + 1][j + b] >= MOD: dp[i + 1][j + b] -= MOD # dp[-1] において j==offset 以上が条件を満たす場合の数 d = dp[-1] ans = 0 for j in range(offset, 2*offset + 1): ans += d[j] if ans >= MOD: ans -= MOD # 誰も選ばないは認められないため ans -= 1 ans %= MOD print(ans) if __name__ == "__main__": main()