← Home
package main

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

const MOD = 1000000007

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var t int
	if _, err := fmt.Fscan(reader, &t); err != nil {
		return
	}

	maxN := 10005
	fact := make([]int64, maxN)
	invFact := make([]int64, maxN)

	fact[0] = 1
	invFact[0] = 1
	for i := 1; i < maxN; i++ {
		fact[i] = (fact[i-1] * int64(i)) % MOD
	}

	invFact[maxN-1] = power(fact[maxN-1], MOD-2)
	for i := maxN - 2; i >= 1; i-- {
		invFact[i] = (invFact[i+1] * int64(i+1)) % MOD
	}

	for i := 0; i < t; i++ {
		var n, c, m int
		fmt.Fscan(reader, &n, &c, &m)

		for j := 0; j < m; j++ {
			var a int
			fmt.Fscan(reader, &a)
		}

		if m < c || m-c > c*(n-1) {
			fmt.Fprintln(writer, 0)
			continue
		}

		N := c * (n - 1)
		K := m - c

		ans := (fact[N] * invFact[K]) % MOD
		ans = (ans * invFact[N-K]) % MOD

		fmt.Fprintln(writer, ans)
	}
}

func power(base, exp int64) int64 {
	res := int64(1)
	base %= MOD
	for exp > 0 {
		if exp%2 == 1 {
			res = (res * base) % MOD
		}
		base = (base * base) % MOD
		exp /= 2
	}
	return res
}