← Home
package main

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

func parseInt(b []byte) int {
	res := 0
	for _, ch := range b {
		res = res*10 + int(ch-'0')
	}
	return res
}

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	const maxCapacity = 1024 * 1024 * 8
	buf := make([]byte, maxCapacity)
	scanner.Buffer(buf, maxCapacity)
	scanner.Split(bufio.ScanWords)

	var out bytes.Buffer

	if !scanner.Scan() {
		return
	}
	t := parseInt(scanner.Bytes())

	for tc := 0; tc < t; tc++ {
		scanner.Scan()
		n := parseInt(scanner.Bytes())
		scanner.Scan()
		k := parseInt(scanner.Bytes())
		scanner.Scan()
		m := parseInt(scanner.Bytes())

		possible := false
		req := (k - 1) / 2
		for i := 0; i < m; i++ {
			scanner.Scan()
			bi := parseInt(scanner.Bytes())
			
			if !possible {
				L := bi - (i + 1)
				R := (n - bi) - (m - (i + 1))
				if L >= req && R >= req {
					possible = true
				}
			}
		}

		if (n-m)%(k-1) != 0 {
			out.WriteString("NO\n")
		} else if possible {
			out.WriteString("YES\n")
		} else {
			out.WriteString("NO\n")
		}
	}
	fmt.Print(out.String())
}