#include <bits/stdc++.h>
using namespace std;
using ll = long long;
vector<int> sieve_primes() {
const int M = 31623;
vector<bool> is(M+1, true);
vector<int> P;
for (int i = 2; i <= M; i++) {
if (is[i]) {
P.push_back(i);
if ((ll)i * i <= M)
for (int j = i*i; j <= M; j += i)
is[j] = false;
}
}
return P;
}
void gen_divisors(ll u, const vector<int>& P, vector<ll>& divs) {
vector<pair<ll,int>> fac;
ll x = u;
for (int p: P) {
if ((ll)p * p > x) break;
if (x % p == 0) {
int e = 0;
while (x % p == 0) {
x /= p;
e++;
}
fac.emplace_back(p, e);
}
}
if (x > 1) fac.emplace_back(x, 1);
function<void(int,ll)> dfs = [&](int i, ll cur) {
if (i == (int)fac.size()) {
if (cur <= u) divs.push_back(cur);
return;
}
auto [p, e] = fac[i];
ll v = 1;
for (int k = 0; k <= e; k++) {
dfs(i+1, cur * v);
v *= p;
}
};
dfs(0, 1);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
auto primes = sieve_primes();
int T;
cin >> T;
while (T--) {
int n;
cin >> n;
vector<ll> a(n);
for (int i = 0; i < n; i++)
cin >> a[i];
unordered_map<ll,int> freq;
freq.reserve(n*2);
for (ll x : a) freq[x]++;
ll ans = 0;
for (auto &kv : freq) {
ll u = kv.first;
ll fu = kv.second;
vector<ll> divs;
gen_divisors(u, primes, divs);
for (ll x : divs) {
ll y = u * (u / x);
auto it = freq.find(y);
if (it == freq.end()) continue;
ll fx = freq[x], fy = it->second;
if (x < y) {
ans += fu * fx * fy;
}
else if (x == y) {
if (fu >= 3) {
ans += fu * ( (fu-1LL)*(fu-2LL)/2 );
}
}
}
}
cout << ans << "\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwoKCnZlY3RvcjxpbnQ+IHNpZXZlX3ByaW1lcygpIHsKICAgIGNvbnN0IGludCBNID0gMzE2MjM7CiAgICB2ZWN0b3I8Ym9vbD4gaXMoTSsxLCB0cnVlKTsKICAgIHZlY3RvcjxpbnQ+IFA7CiAgICBmb3IgKGludCBpID0gMjsgaSA8PSBNOyBpKyspIHsKICAgICAgICBpZiAoaXNbaV0pIHsKICAgICAgICAgICAgUC5wdXNoX2JhY2soaSk7CiAgICAgICAgICAgIGlmICgobGwpaSAqIGkgPD0gTSkKICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSBpKmk7IGogPD0gTTsgaiArPSBpKQogICAgICAgICAgICAgICAgICAgIGlzW2pdID0gZmFsc2U7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIFA7Cn0KCgp2b2lkIGdlbl9kaXZpc29ycyhsbCB1LCBjb25zdCB2ZWN0b3I8aW50PiYgUCwgdmVjdG9yPGxsPiYgZGl2cykgewogICAgdmVjdG9yPHBhaXI8bGwsaW50Pj4gZmFjOwogICAgbGwgeCA9IHU7CiAgICBmb3IgKGludCBwOiBQKSB7CiAgICAgICAgaWYgKChsbClwICogcCA+IHgpIGJyZWFrOwogICAgICAgIGlmICh4ICUgcCA9PSAwKSB7CiAgICAgICAgICAgIGludCBlID0gMDsKICAgICAgICAgICAgd2hpbGUgKHggJSBwID09IDApIHsKICAgICAgICAgICAgICAgIHggLz0gcDsKICAgICAgICAgICAgICAgIGUrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBmYWMuZW1wbGFjZV9iYWNrKHAsIGUpOwogICAgICAgIH0KICAgIH0KICAgIGlmICh4ID4gMSkgZmFjLmVtcGxhY2VfYmFjayh4LCAxKTsKCiAgICAKICAgIGZ1bmN0aW9uPHZvaWQoaW50LGxsKT4gZGZzID0gWyZdKGludCBpLCBsbCBjdXIpIHsKICAgICAgICBpZiAoaSA9PSAoaW50KWZhYy5zaXplKCkpIHsKICAgICAgICAgICAgaWYgKGN1ciA8PSB1KSBkaXZzLnB1c2hfYmFjayhjdXIpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGF1dG8gW3AsIGVdID0gZmFjW2ldOwogICAgICAgIGxsIHYgPSAxOwogICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDw9IGU7IGsrKykgewogICAgICAgICAgICBkZnMoaSsxLCBjdXIgKiB2KTsKICAgICAgICAgICAgdiAqPSBwOwogICAgICAgIH0KICAgIH07CiAgICBkZnMoMCwgMSk7Cn0KCmludCBtYWluKCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwoKICAgIGF1dG8gcHJpbWVzID0gc2lldmVfcHJpbWVzKCk7CgogICAgaW50IFQ7CiAgICBjaW4gPj4gVDsKICAgIHdoaWxlIChULS0pIHsKICAgICAgICBpbnQgbjsKICAgICAgICBjaW4gPj4gbjsKICAgICAgICB2ZWN0b3I8bGw+IGEobik7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgICAgIGNpbiA+PiBhW2ldOwoKICAgICAgICAKICAgICAgICB1bm9yZGVyZWRfbWFwPGxsLGludD4gZnJlcTsKICAgICAgICBmcmVxLnJlc2VydmUobioyKTsKICAgICAgICBmb3IgKGxsIHggOiBhKSBmcmVxW3hdKys7CgogICAgICAgIGxsIGFucyA9IDA7CiAgICAgICAgCiAgICAgICAgZm9yIChhdXRvICZrdiA6IGZyZXEpIHsKICAgICAgICAgICAgbGwgdSA9IGt2LmZpcnN0OwogICAgICAgICAgICBsbCBmdSA9IGt2LnNlY29uZDsKCiAgICAgICAgICAgCiAgICAgICAgICAgIHZlY3RvcjxsbD4gZGl2czsKICAgICAgICAgICAgZ2VuX2Rpdmlzb3JzKHUsIHByaW1lcywgZGl2cyk7CgogICAgICAgICAgIAogICAgICAgICAgICBmb3IgKGxsIHggOiBkaXZzKSB7CiAgICAgICAgICAgICAgICBsbCB5ID0gdSAqICh1IC8geCk7CiAgICAgICAgICAgICAgICBhdXRvIGl0ID0gZnJlcS5maW5kKHkpOwogICAgICAgICAgICAgICAgaWYgKGl0ID09IGZyZXEuZW5kKCkpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgbGwgZnggPSBmcmVxW3hdLCBmeSA9IGl0LT5zZWNvbmQ7CgogICAgICAgICAgICAgICAgaWYgKHggPCB5KSB7CiAgICAgICAgICAgICAgICAgICAgYW5zICs9IGZ1ICogZnggKiBmeTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHggPT0geSkgewogICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgaWYgKGZ1ID49IDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYW5zICs9IGZ1ICogKCAoZnUtMUxMKSooZnUtMkxMKS8yICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBjb3V0IDw8IGFucyA8PCAiXG4iOwogICAgfQogICAgcmV0dXJuIDA7Cn0K
Nwo1CjEgNyA3IDIgNwozCjYgMiAxOAo5CjEgMiAzIDQgNSA2IDcgOCA5CjQKMTAwMCA5OTMgOTg2IDE3OQo3CjEgMTAgMTAwIDEwMDAgMTAwMDAgMTAwMDAwIDEwMDAwMDAKOAoxIDEgMiAyIDQgNCA4IDgKOQoxIDEgMSAyIDIgMiA0IDQgNAo=
7
5
1 7 7 2 7
3
6 2 18
9
1 2 3 4 5 6 7 8 9
4
1000 993 986 179
7
1 10 100 1000 10000 100000 1000000
8
1 1 2 2 4 4 8 8
9
1 1 1 2 2 2 4 4 4