#include <bits/stdc++.h>
using namespace std;
using ll = long long;
// count number of pairs (i<j) in sorted array A whose sum ≤ X
ll count_le(const vector<ll>& A, ll X) {
int n = A.size();
ll cnt = 0;
int i = 0, j = n - 1;
while (i < j) {
if (A[i] + A[j] <= X) {
// for this i, all indices from i+1..j paired with i are ≤ X
cnt += (j - i);
++i;
} else {
// sum too large, decrease j
--j;
}
}
return cnt;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
cin >> T;
while (T--) {
int n;
ll l, r;
cin >> n >> l >> r;
vector<ll> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a.begin(), a.end());
// #pairs with sum ≤ r minus #pairs with sum ≤ l-1
ll ans = count_le(a, r) - count_le(a, l - 1);
cout << ans << "\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwoKLy8gY291bnQgbnVtYmVyIG9mIHBhaXJzIChpPGopIGluIHNvcnRlZCBhcnJheSBBIHdob3NlIHN1bSDiiaQgWApsbCBjb3VudF9sZShjb25zdCB2ZWN0b3I8bGw+JiBBLCBsbCBYKSB7CiAgICBpbnQgbiA9IEEuc2l6ZSgpOwogICAgbGwgY250ID0gMDsKICAgIGludCBpID0gMCwgaiA9IG4gLSAxOwogICAgd2hpbGUgKGkgPCBqKSB7CiAgICAgICAgaWYgKEFbaV0gKyBBW2pdIDw9IFgpIHsKICAgICAgICAgICAgLy8gZm9yIHRoaXMgaSwgYWxsIGluZGljZXMgZnJvbSBpKzEuLmogcGFpcmVkIHdpdGggaSBhcmUg4omkIFgKICAgICAgICAgICAgY250ICs9IChqIC0gaSk7CiAgICAgICAgICAgICsraTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBzdW0gdG9vIGxhcmdlLCBkZWNyZWFzZSBqCiAgICAgICAgICAgIC0tajsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gY250Owp9CgppbnQgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKCiAgICBpbnQgVDsKICAgIGNpbiA+PiBUOwogICAgd2hpbGUgKFQtLSkgewogICAgICAgIGludCBuOwogICAgICAgIGxsIGwsIHI7CiAgICAgICAgY2luID4+IG4gPj4gbCA+PiByOwogICAgICAgIHZlY3RvcjxsbD4gYShuKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBjaW4gPj4gYVtpXTsKICAgICAgICB9CgogICAgICAgIHNvcnQoYS5iZWdpbigpLCBhLmVuZCgpKTsKICAgICAgICAvLyAjcGFpcnMgd2l0aCBzdW0g4omkIHIgbWludXMgI3BhaXJzIHdpdGggc3VtIOKJpCBsLTEKICAgICAgICBsbCBhbnMgPSBjb3VudF9sZShhLCByKSAtIGNvdW50X2xlKGEsIGwgLSAxKTsKICAgICAgICBjb3V0IDw8IGFucyA8PCAiXG4iOwogICAgfQogICAgcmV0dXJuIDA7Cn0K