mod = 10**9+7 n, k = list(map(int, input().split())) A = list(map(int, input().split())) A.sort() from bisect import bisect_right as bs ans = 1 for i in range(n-1, -1, -1): if A[i] * 2 <= k: break c = bs(A, k-A[i]) - (n-1-i) ans = ans * c % mod c = bs(A, k//2) c -= n-c for ci in range(c, 0, -2): ans = ans * (ci - 1) % mod print(ans)