```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
var t int
fmt.Fscan(in, &t)
for i := 0; i < t; i++ {
var n int
fmt.Fscan(in, &n)
a := make([]int64, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &a[i])
}
freq := make(map[int64]int64)
for _, x := range a {
freq[x]++
}
var ans int64 = 0
for _, f := range freq {
ans += f * (f - 1) * (f - 2)
}
var vals []int64
for v := range freq {
vals = append(vals, v)
}
for _, B := range vals {
divs := getDivisors(B)
for _, d := range divs {
b := B / d
if b < 2 {
continue
}
C := B * b
if C > 1000000000000000000 || C > 1000000000 {
continue
}
f, ok := freq[C]
if ok {
ans += freq[d] * freq[B] * f
}
}
}
fmt.Println(ans)
}
}
func getDivisors(n int64) []int64 {
var d []int64
for i := int64(1); i*i <= n; i++ {
if n%i == 0 {
d = append(d, i)
if i != n/i {
d = append(d, n/i)
}
}
}
return d
}
```