#include <iostream>
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define ll long long
const ll N= 2e6;
ll fact[N];
ll cnk(ll a , ll b){
return fact[a] / (fact[b] * fact[a-b]) ;
}
void solve() {
ll n;
cin>>n;
vector<ll> v (n);
for (int i=0; i<n; ++i){
cin>>v[i];
}
if (n<6) {
cout<<0<<endl;
return;
}
if (n==6) {
for (int i=1; i<n; ++i){
if (v[i]-v[i-1]>1000){
cout<<0<<endl;
return;
}
}
}
if (n==6) {
cout<<1<<endl;
return;
}
sort (v.begin(), v.end());
queue<ll> theGroup;
theGroup.push(v[0]);
ll p1, p2;
p1=0;
p2=1;
cout<<n<<endl;
ll ans=0;
while(p2<n){
while (v[p2]-v[p1]<=1000){
theGroup.push(v[p2]);
++p2;
}
++p1;
if (theGroup.size()>=6) ans+=cnk(theGroup.size(), 6);
theGroup.pop();
}
cout<<ans<<endl;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll t=1;
cin>>t;
fact[0]=1;
for (int i=1; i<N; ++i) fact[i]= i* fact[i-1];
while (t--) solve();
return 0;
}
CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbGwgbG9uZyBsb25nCiAKY29uc3QgbGwgTj0gMmU2OyAKbGwgZmFjdFtOXTsgCgpsbCBjbmsobGwgYSAsIGxsIGIpewogICAgcmV0dXJuIGZhY3RbYV0gLyAoZmFjdFtiXSAqIGZhY3RbYS1iXSkgOwp9CgoKdm9pZCBzb2x2ZSgpIHsKICAgIGxsIG47IAogICAgY2luPj5uOyAKICAgIHZlY3RvcjxsbD4gdiAobik7IAogICAgZm9yIChpbnQgaT0wOyBpPG47ICsraSl7CiAgICAgICAgY2luPj52W2ldOyAKICAgIH0KICAgIGlmIChuPDYpIHsKICAgICAgICBjb3V0PDwwPDxlbmRsOyAKICAgICAgICByZXR1cm47IAogICAgfQogICAgaWYgKG49PTYpIHsKICAgICAgICBmb3IgKGludCBpPTE7IGk8bjsgKytpKXsKICAgICAgICAgICAgaWYgKHZbaV0tdltpLTFdPjEwMDApewogICAgICAgICAgICAgICAgY291dDw8MDw8ZW5kbDsgCiAgICAgICAgICAgICAgICByZXR1cm47IAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYgKG49PTYpIHsKICAgICAgICBjb3V0PDwxPDxlbmRsOyAKICAgICAgICByZXR1cm47IAogICAgfQogICAgCiAgICBzb3J0ICh2LmJlZ2luKCksIHYuZW5kKCkpOyAKICAgIHF1ZXVlPGxsPiB0aGVHcm91cDsgCiAgICB0aGVHcm91cC5wdXNoKHZbMF0pOyAKICAgIGxsIHAxLCBwMjsgCiAgICBwMT0wOyAKICAgIHAyPTE7CmNvdXQ8PG48PGVuZGw7CiAgICBsbCBhbnM9MDsgCiAgICB3aGlsZShwMjxuKXsKICAgICAgICB3aGlsZSAodltwMl0tdltwMV08PTEwMDApewogICAgICAgICAgICB0aGVHcm91cC5wdXNoKHZbcDJdKTsgCiAgICAgICAgICAgICsrcDI7CiAgICAgICAgfQogICAgICAgICsrcDE7IAogICAgICAgIGlmICh0aGVHcm91cC5zaXplKCk+PTYpIGFucys9Y25rKHRoZUdyb3VwLnNpemUoKSwgNik7IAogICAgICAgIHRoZUdyb3VwLnBvcCgpOyAKICAgIH0KCiAgICBjb3V0PDxhbnM8PGVuZGw7IAp9CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICBsbCB0PTE7CiAgICBjaW4+PnQ7IAogICAgZmFjdFswXT0xOyAKICAgIGZvciAoaW50IGk9MTsgaTxOOyArK2kpIGZhY3RbaV09IGkqIGZhY3RbaS0xXTsgCiAgICB3aGlsZSAodC0tKSBzb2x2ZSgpOyAKIAogICAgcmV0dXJuIDA7Cn0=