#include #include #include #include #include #include #include using namespace std; typedef long long ll; int N, K; int A[200000]; int B[200000]; const ll MOD = 1000000007; int main(){ ios::sync_with_stdio(false); cin.tie(0); cout << setprecision(10) << fixed; cin >> N >> K; for(int i = 0; i < N; i++) cin >> A[i]; for(int i = 0; i < N; i++) B[i] = A[N-i-1]; sort(A, A+N, greater()); ll ans = 1; for(int i = 0; i < N; i++){ if(A[i]*2 <= K){ int m = N-2*i; for(int i = m; i > 0; i -= 2){ ans *= (i-1); ans %= MOD; } cout << ans << endl; return 0; } auto p = upper_bound(B, B+N, K-A[i]); int m = p-B-i; if(m <= 0){ cout << 0 << endl; return 0; } ans *= m; ans %= MOD; } cout << ans << endl; }