#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define REP(i, a, b) for (int i = a; i <= b; i++)
#define BACK(i, a, b) for (int i = a; i >= b; i--)
#define MOD 1000000007
#define PI 4 * atan(1)
#define sz(A) (int)A.size()
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pii;
typedef vector<long long> vll;
typedef long int int32;
typedef unsigned long int uint32;
typedef long long int int64;
typedef unsigned long long int uint64;
void solve(int test){
int n; cin >> n;
ll k; cin >> k;
vector<ll> a(n);
REP(i,0,n-1){
cin >> a[i];
}
ll res = 0;
sort(a.begin(), a.end());
REP(i,0,n-3){
if(a[i] >= k) break;
REP(j,i+1, n-2){
if(a[i] + a[j] < k){
auto it = lower_bound(a.begin()+j+1, a.end(), k - a[i] - a[j]);
res += it - a.begin() - j - 1;
}
}
}
cout << res << "\n";
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int typetest = 1;
if (typetest){
int t;
cin >> t;
cin.ignore();
REP(i, 1, t){
solve(i);
}
}
else solve(0);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgUkVQKGksIGEsIGIpIGZvciAoaW50IGkgPSBhOyBpIDw9IGI7IGkrKykKI2RlZmluZSBCQUNLKGksIGEsIGIpIGZvciAoaW50IGkgPSBhOyBpID49IGI7IGktLSkgCiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKI2RlZmluZSBQSSA0ICogYXRhbigxKQojZGVmaW5lIHN6KEEpIChpbnQpQS5zaXplKCkKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgdmVjdG9yPGludD4gdmk7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gcGlpOwp0eXBlZGVmIHZlY3Rvcjxsb25nIGxvbmc+IHZsbDsKdHlwZWRlZiBsb25nIGludCBpbnQzMjsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1aW50MzI7CnR5cGVkZWYgbG9uZyBsb25nIGludCBpbnQ2NDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnQ2NDsKCgp2b2lkIHNvbHZlKGludCB0ZXN0KXsKICAgIGludCBuOyBjaW4gPj4gbjsKICAgIGxsIGs7IGNpbiA+PiBrOwogICAgdmVjdG9yPGxsPiBhKG4pOwogICAgUkVQKGksMCxuLTEpewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgfQogICAgbGwgcmVzID0gMDsKICAgIHNvcnQoYS5iZWdpbigpLCBhLmVuZCgpKTsKICAgIFJFUChpLDAsbi0zKXsKICAgICAgICBpZihhW2ldID49IGspIGJyZWFrOwogICAgICAgIFJFUChqLGkrMSwgbi0yKXsKICAgICAgICAgICAgaWYoYVtpXSArIGFbal0gPCBrKXsKICAgICAgICAgICAgICAgIGF1dG8gaXQgPSBsb3dlcl9ib3VuZChhLmJlZ2luKCkraisxLCBhLmVuZCgpLCBrIC0gYVtpXSAtIGFbal0pOwogICAgICAgICAgICAgICAgcmVzICs9IGl0IC0gYS5iZWdpbigpIC0gaiAtIDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8IHJlcyA8PCAiXG4iOwp9CgppbnQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgY291dC50aWUoTlVMTCk7CiAgICBpbnQgdHlwZXRlc3QgPSAxOwogICAgaWYgKHR5cGV0ZXN0KXsKICAgICAgICBpbnQgdDsKICAgICAgICBjaW4gPj4gdDsKICAgICAgICBjaW4uaWdub3JlKCk7CiAgICAgICAgUkVQKGksIDEsIHQpewogICAgICAgICAgICBzb2x2ZShpKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHNvbHZlKDApOwp9IA==