← Home
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	in := bufio.NewReaderSize(os.Stdin, 1<<20)
	out := bufio.NewWriterSize(os.Stdout, 1<<20)
	defer out.Flush()

	var t int
	fmt.Fscan(in, &t)
	for ; t > 0; t-- {
		var n int
		var x, y int64
		fmt.Fscan(in, &n, &x, &y)
		m := make(map[uint64]int64, n*2)
		var ans int64 = 0
		for i := 0; i < n; i++ {
			var a int64
			fmt.Fscan(in, &a)
			ry := a % y
			rx := a % x
			need := (x - rx) % x
			kNeed := (uint64(uint32(ry)) << 32) | uint64(uint32(need))
			ans += m[kNeed]
			kCur := (uint64(uint32(ry)) << 32) | uint64(uint32(rx))
			m[kCur]++
		}
		fmt.Fprintln(out, ans)
	}
}