/*
Task: 1462E2
Date: Dec 18 2020
Written by aLittleLove (Minh Vu)
*/
#include<bits/stdc++.h>
#define rep(i,n) for (int i=0, _n=n; i<_n; i++)
#define FOR(i,a,b) for (int _a=(a), _b=(b), i=_a; _a<=_b?i<=_b:i>=_b; _a<=_b?i++:i--)
#define _mem(a, b) memset(a, (b), sizeof(a))
#define pb push_back
#define fi first
#define se second
#define sz(a) int((a).size())
using namespace std;
typedef long long ll;
typedef int64_t i64;
typedef pair<int, int> pii;
typedef vector<pii> vii;
typedef vector<int> vi;
const int N = 2e5 + 5;
const int inf = 1e9;
const i64 mod = 1e9 + 7;
const double pi = atan(1) * 4.0;
template<typename T, typename U> inline void mini(T &x, U y) { if(y < x) x = y; }
template<typename T, typename U> inline void maxi(T &x, U y) { if(x < y) x = y; }
i64 _pow(i64 x, i64 y)
{
if (y==0) return 1;
i64 tmp = _pow(x, y/2ll);
if (y&1) return (tmp%mod * tmp%mod * x%mod)%mod;
return (tmp%mod * tmp%mod)%mod;
}
int a[N];
i64 fact[N], invFact[N];
i64 C(int n, int k)
{
if (k>n) return 0;
return fact[n] * invFact[k] % mod * invFact[n - k] % mod;
}
void Solve()
{
int n, m, k;
i64 ans = 0;
cin >> n >> m >> k;
rep(i,n) cin >> a[i];
sort(a, a+n);
for (int i=0; i<n; i++)
{
int l = i + 1;
int r = upper_bound(a,a+n,a[i]+k) - a;
ans = (ans + C(r - l, m - 1))%mod;
}
cout << ans << '\n';
}
int main()
{
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
//freopen("input.txt","r",stdin);
int nTest; cin >> nTest;
fact[0] = invFact[0] = 1;
for (int i=1; i<N; i++)
{
fact[i] = (fact[i - 1] * i) % mod;
invFact[i] = _pow(fact[i], mod - 2);
}
while (nTest--) Solve();
return 0;
}
LyogClRhc2s6IDE0NjJFMgpEYXRlOiBEZWMgMTggMjAyMApXcml0dGVuIGJ5IGFMaXR0bGVMb3ZlIChNaW5oIFZ1KQoqLwogCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgcmVwKGksbikgZm9yIChpbnQgaT0wLCBfbj1uOyBpPF9uOyBpKyspCiNkZWZpbmUgRk9SKGksYSxiKSBmb3IgKGludCBfYT0oYSksIF9iPShiKSwgaT1fYTsgX2E8PV9iP2k8PV9iOmk+PV9iOyBfYTw9X2I/aSsrOmktLSkKI2RlZmluZSBfbWVtKGEsIGIpIG1lbXNldChhLCAoYiksIHNpemVvZihhKSkKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIHN6KGEpIGludCgoYSkuc2l6ZSgpKQogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIGludDY0X3QgaTY0Owp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IHBpaTsKdHlwZWRlZiB2ZWN0b3I8cGlpPiB2aWk7CnR5cGVkZWYgdmVjdG9yPGludD4gdmk7CmNvbnN0IGludCBOID0gMmU1ICsgNTsKY29uc3QgaW50IGluZiA9IDFlOTsKY29uc3QgaTY0IG1vZCA9IDFlOSArIDc7CmNvbnN0IGRvdWJsZSBwaSA9IGF0YW4oMSkgKiA0LjA7CnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSB2b2lkIG1pbmkoVCAmeCwgVSB5KSB7IGlmKHkgPCB4KSB4ID0geTsgfQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgdm9pZCBtYXhpKFQgJngsIFUgeSkgeyBpZih4IDwgeSkgeCA9IHk7IH0KIAppNjQgX3BvdyhpNjQgeCwgaTY0IHkpCnsKICAgIGlmICh5PT0wKSByZXR1cm4gMTsKICAgIGk2NCB0bXAgPSBfcG93KHgsIHkvMmxsKTsKICAgIGlmICh5JjEpIHJldHVybiAodG1wJW1vZCAqIHRtcCVtb2QgKiB4JW1vZCklbW9kOwogICAgcmV0dXJuICh0bXAlbW9kICogdG1wJW1vZCklbW9kOwp9CiAKaW50IGFbTl07Cmk2NCBmYWN0W05dLCBpbnZGYWN0W05dOwogCmk2NCBDKGludCBuLCBpbnQgaykKewogICAgaWYgKGs+bikgcmV0dXJuIDA7CiAgICByZXR1cm4gZmFjdFtuXSAqIGludkZhY3Rba10gJSBtb2QgKiBpbnZGYWN0W24gLSBrXSAlIG1vZDsKfQogCnZvaWQgU29sdmUoKQp7CiAgICBpbnQgbiwgbSwgazsKICAgIGk2NCBhbnMgPSAwOwogICAgY2luID4+IG4gPj4gbSA+PiBrOwogICAgcmVwKGksbikgY2luID4+IGFbaV07CiAgICBzb3J0KGEsIGErbik7CiAgICBmb3IgKGludCBpPTA7IGk8bjsgaSsrKQogICAgewogICAgICAgIGludCBsID0gaSArIDE7CiAgICAgICAgaW50IHIgPSB1cHBlcl9ib3VuZChhLGErbixhW2ldK2spIC0gYTsKICAgICAgICBhbnMgPSAoYW5zICsgQyhyIC0gbCwgbSAtIDEpKSVtb2Q7CiAgICB9CiAgICBjb3V0IDw8IGFucyA8PCAnXG4nOwp9CiAKaW50IG1haW4oKQp7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICAvL2ZyZW9wZW4oImlucHV0LnR4dCIsInIiLHN0ZGluKTsKICAgIGludCBuVGVzdDsgY2luID4+IG5UZXN0OwogICAgZmFjdFswXSA9IGludkZhY3RbMF0gPSAxOwogICAgZm9yIChpbnQgaT0xOyBpPE47IGkrKykKICAgIHsKICAgICAgICBmYWN0W2ldID0gKGZhY3RbaSAtIDFdICogaSkgJSBtb2Q7CiAgICAgICAgaW52RmFjdFtpXSA9IF9wb3coZmFjdFtpXSwgbW9kIC0gMik7CiAgICB9CiAgICB3aGlsZSAoblRlc3QtLSkgU29sdmUoKTsKIAogICAgcmV0dXJuIDA7Cn0=