#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define double long double
#define print(a) for(auto x : a) cout << x << " "; cout << endl
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;
//_ Intuition : Maths
//* We have pairs (x, y)
//* if x = -ve , y = +ve
//* |x| = +ve , |y| = +ve
//* (-x,y),(x,-y),(x,y) are all same
//* but (-x,x) is differnt := x--x = 2x, x-x = 0 : valid
//* So we only concerened with +ves i.e. (-x,x) => (x,x)
//* a[] contains pairwise distinct ele (including neg)
//* [-2, -3, 2, 3] distinct but we want => [2, 3] since -ve have no effect
//_ Maths :
//* |x + y| >= y always
//* if x == 0 := |0+y|==y
//* |x-y| :
//* if x >= y/2 := |y/2 - y| <= x ✅
//* if x < y/2 := |y-y/2+1| > x ❌
//* Hence we want pairs (x,y) such that x = [y/2, y]
//* So we iterate for y = a[i]
//* and find count of ai's >= ceil(y/2) using BInary Search
int consistency(int n){
vector<int> b;
for(int i=0; i<n; i++){
int val = abs(a[i]);
b.push_back(val);
}
int m = b.size();
sort(begin(b), end(b));
int ans = 0;
for(int i=1; i<m; i++){
int x = (b[i]+2-1)/2;
auto yCt = i;
auto xCt = lower_bound(begin(b), end(b), x) - begin(b);
ans += yCt - xCt;
}
return ans;
}
void solve() {
int n;
cin>>n;
a.resize(n);
for(int i=0; i<n; i++) cin >> a[i];
cout << consistency(n) << 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+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50ICAgICAgICAgICAgICBsb25nIGxvbmcgaW50CiNkZWZpbmUgZG91YmxlICAgICAgICAgICBsb25nIGRvdWJsZQojZGVmaW5lIHByaW50KGEpICAgICAgICAgZm9yKGF1dG8geCA6IGEpIGNvdXQgPDwgeCA8PCAiICI7IGNvdXQgPDwgZW5kbAppbmxpbmUgaW50IHBvd2VyKGludCBhLCBpbnQgYikgewogICAgaW50IHggPSAxOwogICAgd2hpbGUgKGIpIHsKICAgICAgICBpZiAoYiAmIDEpIHggKj0gYTsKICAgICAgICBhICo9IGE7CiAgICAgICAgYiA+Pj0gMTsKICAgIH0KICAgIHJldHVybiB4Owp9CgoKY29uc3QgaW50IE0gPSAxMDAwMDAwMDA3Owpjb25zdCBpbnQgTiA9IDNlNSs5Owpjb25zdCBpbnQgSU5GID0gMmU5KzE7CmNvbnN0IGludCBMSU5GID0gMjAwMDAwMDAwMDAwMDAwMDAwMTsKCi8vXyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBTVEFSVCBCZWxvdyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgp2ZWN0b3I8aW50PiBhOwoKLy9fIEludHVpdGlvbiAgOiBNYXRocyAKLy8qIFdlIGhhdmUgcGFpcnMgKHgsIHkpCi8vKiBpZiB4ID0gLXZlICwgeSA9ICt2ZSAKLy8qICAgICB8eHwgPSArdmUgLCB8eXwgPSArdmUKLy8qICAgICAoLXgseSksKHgsLXkpLCh4LHkpIGFyZSBhbGwgc2FtZQovLyogICAgIGJ1dCAoLXgseCkgaXMgZGlmZmVybnQgOj0geC0teCA9IDJ4LCB4LXggPSAwIDogdmFsaWQKLy8qICAgICBTbyB3ZSBvbmx5IGNvbmNlcmVuZWQgd2l0aCArdmVzIGkuZS4gKC14LHgpID0+ICh4LHgpCgovLyogYVtdIGNvbnRhaW5zIHBhaXJ3aXNlIGRpc3RpbmN0IGVsZSAoaW5jbHVkaW5nIG5lZykKLy8qICAgICBbLTIsIC0zLCAyLCAzXSBkaXN0aW5jdCBidXQgd2Ugd2FudCA9PiBbMiwgM10gc2luY2UgLXZlIGhhdmUgbm8gZWZmZWN0CgovL18gTWF0aHMgOiAKLy8qICAgICB8eCArIHl8ID49IHkgYWx3YXlzIAovLyogICAgICAgICBpZiB4ID09IDAgOj0gfDAreXw9PXkKLy8qICAgICB8eC15fCA6IAovLyogICAgICAgICBpZiB4ID49IHkvMiA6PSB8eS8yIC0geXwgPD0geCAg4pyFIAovLyogICAgICAgICBpZiB4IDwgeS8yICA6PSB8eS15LzIrMXwgPiB4ICDinYwKCi8vKiBIZW5jZSB3ZSB3YW50IHBhaXJzICh4LHkpIHN1Y2ggdGhhdCB4ID0gW3kvMiwgeV0KLy8qIFNvIHdlIGl0ZXJhdGUgZm9yIHkgPSBhW2ldCi8vKiAgICAgYW5kIGZpbmQgY291bnQgb2YgYWkncyA+PSBjZWlsKHkvMikgdXNpbmcgQkluYXJ5IFNlYXJjaAoKCgppbnQgY29uc2lzdGVuY3koaW50IG4pewoKICAgIHZlY3RvcjxpbnQ+IGI7CiAgICBmb3IoaW50IGk9MDsgaTxuOyBpKyspewogICAgICAgIGludCB2YWwgPSBhYnMoYVtpXSk7CiAgICAgICAgYi5wdXNoX2JhY2sodmFsKTsKICAgIH0KCiAgICBpbnQgbSA9IGIuc2l6ZSgpOwogICAgc29ydChiZWdpbihiKSwgZW5kKGIpKTsKICAgIGludCBhbnMgPSAwOwogICAgZm9yKGludCBpPTE7IGk8bTsgaSsrKXsKICAgICAgICBpbnQgeCA9IChiW2ldKzItMSkvMjsgCiAgICAgICAgYXV0byB5Q3QgPSBpOwogICAgICAgIGF1dG8geEN0ID0gbG93ZXJfYm91bmQoYmVnaW4oYiksIGVuZChiKSwgeCkgLSBiZWdpbihiKTsKCiAgICAgICAgYW5zICs9IHlDdCAtIHhDdDsKICAgIH0KCiAgICByZXR1cm4gYW5zOwp9Cgp2b2lkIHNvbHZlKCkgewogICAgCiAgICBpbnQgbjsKICAgIGNpbj4+bjsKICAgIGEucmVzaXplKG4pOwogICAgCiAgICBmb3IoaW50IGk9MDsgaTxuOyBpKyspIGNpbiA+PiBhW2ldOwogICAgY291dCA8PCBjb25zaXN0ZW5jeShuKSA8PCBlbmRsOwoKCn0KCgoKCgoKaW50MzJfdCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CgogICAgaW50IHQgPSAxOwogICAgY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgc29sdmUoKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==