#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define double long double
inline int power(int a, int b) {
int x = 1;
while (b) {
if (b & 1) x *= a;
a *= a;
b >>= 1;
}
return x;
}
const int M = 1000000007;
const int N = 3e5+9;
const int INF = 2e9+1;
const int LINF = 2000000000000000001;
//_ ***************************** START Below *******************************
vector<int> a;
int bruteforce(int n, int k1, int k2){
int ans = 0;
for(int i=0; i<n-2; i++){
for(int j=i+1; j<n-2; j++){
int leftSum = a[i] + a[j];
if(leftSum <= k1) continue;
for(int k=j+1; k<n-1; k++){
for(int l=k+1; l<n; l++){
int rightSum = a[k] + a[l];
if(rightSum > k2 ) ans++;
}
}
}
}
return ans;
}
//* Global 2 ptr * local 2 ptr
//* O(n^2)
//* [ 1 2 2 2 3 ] , k1 = 3, k2 = 3
//* i j | s e
//* [ ( 1 2 2 2 ) |(2 3) ]
//* 2 * 1
//* i j | s e
//* [ 1 ( 2 2 ) |(2 2 3) ]
//* 1 * 3
int consistency1(int n, int k1, int k2) {
int ans = 0;
int i = 0, j = n-3;
while(i<j){
if(a[i] + a[j] <= k1){
i++;
}
else{
int right = 0;
int s = j+1;
int e = n-1;
while(s<e){
if(a[s]+a[e] <= k2){
s++;
}
else{
right += e-s;
e--;
}
}
int left = j-i;
ans += left*right;
j--;
}
}
return ans;
}
//* template 2
//* This is just above method only
int consistency2(int n, int k1, int k2) {
int ans = 0;
for(int j=n-3, i=0; j>=1; j--){
int left = 0;
while(i<j && a[i]+a[j] <= k1) i++;
if(i==j) break;
left += j-i;
int right = 0;
int s = j+1, e = n-1;
while(s<e){
if(a[s] + a[e] <= k2) s++;
else {
right += e-s;
e--;
}
}
ans += (left * right);
}
return ans;
}
//* O(n^2)
int consistency3(int n, int k1, int k2) {
int ans = 0;
for(int j=1; j<n-2; j++){
int i=j-1;
while(i>=0 && a[i]+a[j] > k1) i--;
int left = j-i-1;
int s= j+1, e = n-1;
int right = 0;
while(s<e){
if(a[s]+a[e] > k2){
right += (e-s);
e--;
}
else{
s++;
}
}
ans += left * right;
}
return ans;
}
int practice(int n, int k1, int k2) {
}
void solve() {
int n, k1, k2;
cin >> n >> k1 >> k2;
a.resize(n);
for(int i=0; i<n; i++) cin >> a[i];
cout << bruteforce(n, k1, k2) << " ";
cout << consistency1(n, k1, k2) << " ";
// cout << consistency2(n, k1, k2) << " ";
cout << consistency3(n, k1, k2) << endl;
// cout << bruteforce(n, k1, k2) << " -> ";
// cout << practice(n, k1, k2) << endl;
}
int32_t main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int t = 1;
cin >> t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50ICAgICAgICAgICAgICBsb25nIGxvbmcgaW50CiNkZWZpbmUgZG91YmxlICAgICAgICAgICBsb25nIGRvdWJsZQppbmxpbmUgaW50IHBvd2VyKGludCBhLCBpbnQgYikgewogICAgaW50IHggPSAxOwogICAgd2hpbGUgKGIpIHsKICAgICAgICBpZiAoYiAmIDEpIHggKj0gYTsKICAgICAgICBhICo9IGE7CiAgICAgICAgYiA+Pj0gMTsKICAgIH0KICAgIHJldHVybiB4Owp9CgoKY29uc3QgaW50IE0gPSAxMDAwMDAwMDA3Owpjb25zdCBpbnQgTiA9IDNlNSs5Owpjb25zdCBpbnQgSU5GID0gMmU5KzE7CmNvbnN0IGludCBMSU5GID0gMjAwMDAwMDAwMDAwMDAwMDAwMTsKCi8vXyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBTVEFSVCBCZWxvdyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgoKCnZlY3RvcjxpbnQ+IGE7CgoKaW50IGJydXRlZm9yY2UoaW50IG4sIGludCBrMSwgaW50IGsyKXsKCWludCBhbnMgPSAwOwoJCglmb3IoaW50IGk9MDsgaTxuLTI7IGkrKyl7CgkJZm9yKGludCBqPWkrMTsgajxuLTI7IGorKyl7CgkJCWludCBsZWZ0U3VtID0gYVtpXSArIGFbal07CgkJCWlmKGxlZnRTdW0gPD0gazEpIGNvbnRpbnVlOwoJCQkKCQkJZm9yKGludCBrPWorMTsgazxuLTE7IGsrKyl7CgkJCQlmb3IoaW50IGw9aysxOyBsPG47IGwrKyl7CgkJCQkJaW50IHJpZ2h0U3VtID0gYVtrXSArIGFbbF07CgkJCQkJaWYocmlnaHRTdW0gPiBrMiApIGFucysrOwoJCQkJfQoJCQl9CgkJfQoJfQoJcmV0dXJuIGFuczsKfQoKCgoKLy8qIEdsb2JhbCAyIHB0ciAqIGxvY2FsIDIgcHRyCgovLyogTyhuXjIpCgovLyogWyAxIDIgMiAyIDMgXSAsIGsxID0gMywgazIgPSAzCgovLyogICAgIGkgICAgICBqICAgfCBzIGUKLy8qIFsgKCAxIDIgMiAgMiApIHwoMiAzKSBdCi8vKiAgICAgCTIgICAgICAqICAxCgovLyogICAgICAgaSBqICAgfCBzICAgZQovLyogWyAxICggMiAyICkgfCgyIDIgMykgXQovLyogICAgICAgIDEgICAgKiAgIDMKCmludCBjb25zaXN0ZW5jeTEoaW50IG4sIGludCBrMSwgaW50IGsyKSB7CgkKCWludCBhbnMgPSAwOwoKCWludCBpID0gMCwgaiA9IG4tMzsKCgl3aGlsZShpPGopewoJCWlmKGFbaV0gKyBhW2pdIDw9IGsxKXsKCQkJaSsrOwoJCX0KCQllbHNlewoJCQlpbnQgcmlnaHQgPSAwOwoJCQlpbnQgcyA9IGorMTsKCQkJaW50IGUgPSBuLTE7CgkJCXdoaWxlKHM8ZSl7CgkJCQlpZihhW3NdK2FbZV0gPD0gazIpewoJCQkJCXMrKzsKCQkJCX0KCQkJCWVsc2V7CgkJCQkJcmlnaHQgKz0gZS1zOwoJCQkJCWUtLTsKCQkJCX0KCQkJfQoJCQkKCQkJaW50IGxlZnQgPSBqLWk7CgkJCQoJCQlhbnMgKz0gbGVmdCpyaWdodDsKCQkJCgkJCWotLTsKCQl9Cgl9CgoKCXJldHVybiBhbnM7CgkKfQoKCgovLyogdGVtcGxhdGUgMgovLyogCVRoaXMgaXMganVzdCBhYm92ZSBtZXRob2Qgb25seSAKCmludCBjb25zaXN0ZW5jeTIoaW50IG4sIGludCBrMSwgaW50IGsyKSB7CgkKCWludCBhbnMgPSAwOwoJCglmb3IoaW50IGo9bi0zLCBpPTA7IGo+PTE7IGotLSl7CgkJaW50IGxlZnQgPSAwOwoJCXdoaWxlKGk8aiAmJiBhW2ldK2Fbal0gPD0gazEpIGkrKzsKCQlpZihpPT1qKSBicmVhazsKCQlsZWZ0ICs9IGotaTsKCQkKCQlpbnQgcmlnaHQgPSAwOwoJCWludCBzID0gaisxLCBlID0gbi0xOwoJCXdoaWxlKHM8ZSl7CgkJCWlmKGFbc10gKyBhW2VdIDw9IGsyKSBzKys7CgkJCWVsc2UgewoJCQkJcmlnaHQgKz0gZS1zOwoJCQkJZS0tOwoJCQl9CgkJfQoJCQoJCWFucyArPSAobGVmdCAqIHJpZ2h0KTsKCQkKCX0KCQoJcmV0dXJuIGFuczsKCQp9CgoKCgoKCgovLyogTyhuXjIpCmludCBjb25zaXN0ZW5jeTMoaW50IG4sIGludCBrMSwgaW50IGsyKSB7CgkKCWludCBhbnMgPSAwOwoJZm9yKGludCBqPTE7IGo8bi0yOyBqKyspewoJCWludCBpPWotMTsKCQl3aGlsZShpPj0wICYmIGFbaV0rYVtqXSA+IGsxKSBpLS07CgkJaW50IGxlZnQgPSBqLWktMTsKCQkKCQlpbnQgIHM9IGorMSwgZSA9IG4tMTsKCQlpbnQgcmlnaHQgPSAwOwoJCQoJCXdoaWxlKHM8ZSl7CgkJCWlmKGFbc10rYVtlXSA+IGsyKXsKCQkJCXJpZ2h0ICs9IChlLXMpOwoJCQkJZS0tOwoJCQl9CgkJCWVsc2V7CgkJCQlzKys7CgkJCX0KCQl9CgkJYW5zICs9IGxlZnQgKiByaWdodDsKCX0KCQoJcmV0dXJuIGFuczsKfQoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKaW50IHByYWN0aWNlKGludCBuLCBpbnQgazEsIGludCBrMikgewoJCgkKfQoKCnZvaWQgc29sdmUoKSB7CiAgICAKCWludCBuLCBrMSwgazI7CgljaW4gPj4gbiA+PiBrMSA+PiBrMjsKCQoJYS5yZXNpemUobik7Cglmb3IoaW50IGk9MDsgaTxuOyBpKyspIGNpbiA+PiBhW2ldOwogICAgCiAgICBjb3V0IDw8IGJydXRlZm9yY2UobiwgazEsIGsyKSA8PCAiICI7CiAgICBjb3V0IDw8IGNvbnNpc3RlbmN5MShuLCBrMSwgazIpIDw8ICIgIjsKICAgIC8vIGNvdXQgPDwgY29uc2lzdGVuY3kyKG4sIGsxLCBrMikgPDwgIiAiOwogICAgY291dCA8PCBjb25zaXN0ZW5jeTMobiwgazEsIGsyKSA8PCBlbmRsOwogICAgCiAgICAKICAgIC8vIGNvdXQgPDwgYnJ1dGVmb3JjZShuLCBrMSwgazIpIDw8ICIgLT4gIjsKICAgIC8vIGNvdXQgPDwgcHJhY3RpY2UobiwgazEsIGsyKSA8PCBlbmRsOwogICAgCn0KCgoKCgppbnQzMl90IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKCiAgICBpbnQgdCA9IDE7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQoKICAgIHJldHVybiAwOwp9