← Home
```go
package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
	"strconv"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	scanInt := func() int {
		scanner.Scan()
		val, _ := strconv.Atoi(scanner.Text())
		return val
	}

	if !scanner.Scan() {
		return
	}
	t, _ := strconv.Atoi(scanner.Text())

	for i := 0; i < t; i++ {
		n := scanInt()
		a := make([]int, n)
		for j := 0; j < n; j++ {
			a[j] = scanInt()
		}
		sort.Ints(a)

		var ans int64
		for j := 0; j < n; {
			k := j + 1
			for k < n && a[k] == a[j] {
				k++
			}
			cnt := int64(k - j)
			prev := int64(j)

			if cnt >= 3 {
				ans += cnt * (cnt - 1) * (cnt - 2) / 6
			}
			if cnt >= 2 {
				ans += cnt * (cnt - 1) / 2 * prev
			}
			j = k
		}
		fmt.Fprintln(writer, ans)
	}
}
```