import algorithm, deques, heapqueue, math, sets, sequtils, strutils, sugar, tables

proc input*(): string =
    return stdin.readLine
proc chmax*[T: SomeNumber](num0: var T, num1: T) =
    num0 = max(num0, num1)
proc chmin*[T: SomeNumber](num0: var T, num1: T) =
    num0 = min(num0, num1)
proc `%=`*[T: SomeInteger](num0: var T, num1: T) =
    num0 = num0 mod num1

var
    A, cumsum: seq[int]
    dp: array[110, array[110, array[10010, int]]]

proc solve() =
    const MOD = 10^9 + 7
    var N, K: int
    (N, K) = input().split.map(parseInt)
    A = input().split.map(parseInt)

    cumsum = concat(@[0], cumsummed(A))
    for i in 0..<N:
        dp[i][0][0] = 1
        for j in 0..<N:
            for k in 0..cumsum[i]:
                dp[i + 1][j][k] += dp[i][j][k]
                dp[i + 1][j][k] %= MOD
                dp[i + 1][j + 1][k + A[i]] += dp[i][j][k]
                dp[i + 1][j + 1][k + A[i]] %= MOD
    
    var ans = 0
    for i in 1..N:
        for j in 0..cumsum[^1]:
            if i*K <= j:
                ans += dp[N][i][j]
                ans %= MOD
    echo ans

when is_main_module:
    solve()