#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[100005];
ll c[100005];
const int mod = 1000000007;
ll qpow(ll a, ll k) // 快速幂取模
{
ll res = 1;
while(k)
{
if(k % 2) res *= a;
res %= mod;
k /= 2;
a = (a * a) % mod;
}
return res % mod;
}
ll C(ll n, ll m)
{
if(m > n) return 0;
c[0] = 1;
for(ll i = 1; i <= m; i ++)
{
c[i] = ((c[i - 1] * (n - i + 1))%mod) * qpow(i, mod - 2); // 逆元
c[i] %= mod;
}
return c[m] % mod;
}
int main()
{
ll n,m,i,j,k,d;
ll t;
ll numd = 0;
scanf("%lld",&t);
while(t--)
{
scanf("%lld %lld %lld %lld", &n, &m, &k, &d);
numd = 0;
for(i = 1; i <= n; i ++)
{
scanf("%lld", &a[i]);
if(a[i] >= d) numd ++;
}
ll ans = 0;
ll nn = min(numd,m);
for(i = k; i <= nn; i ++)
{
ans += C(numd,i) * C(n - numd, m - i);
}
ans %= mod;
printf("%lld\n",ans);
}
return 0;
}