#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 * O(1) ) + O(n*logn) == O(n*logn)
int consistency1(int n, int k1, int k2) {
int ans = 0;
vector<int> pairsInSuffix(n);
for(int i=n-2; i>=0; i--){
int t = k2-a[i];
int j = upper_bound(a.begin()+i+1 , a.end(), t) - a.begin();
int pairsFormedByCurr = n-j;
pairsInSuffix[i] = pairsFormedByCurr + pairsInSuffix[i+1];
}
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 = pairsInSuffix[j+1];
ans += (left * right);
}
return ans;
}
//* O( n * (O(logn) + O(1) ) + O(n*logn) == O(n*logn)
int consistency2(int n, int k1, int k2) {
int ans = 0;
vector<int> pairsBy(n);
for(int i=0; i<n-1; i++){
int j = upper_bound(a.begin()+i+1, a.end(), k2-a[i]) - a.begin();
pairsBy[i] = n-j;
}
vector<int> pairsInSuffix(n);
for(int i=n-2; i>=0; i--){
pairsInSuffix[i] = pairsInSuffix[i+1] + pairsBy[i];
}
for(int j=1; j<n-2; j++){
int i = upper_bound(a.begin(), a.begin() + j, k1-a[j]) - a.begin();
int left= j-i;
int right = pairsInSuffix[j+1];
ans += left*right;
}
return ans;
}
int practice(int n, int k1, int k2) {
return 0;
}
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) << 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;
}