← Home
package main

import (
	"bufio"
	"io"
	"os"
	"strings"
)

type FastScanner struct {
	data []byte
	idx  int
	n    int
}

func NewFastScanner() *FastScanner {
	data, _ := io.ReadAll(os.Stdin)
	return &FastScanner{data: data, n: len(data)}
}

func (fs *FastScanner) skip() {
	for fs.idx < fs.n && fs.data[fs.idx] <= ' ' {
		fs.idx++
	}
}

func (fs *FastScanner) nextInt() int {
	fs.skip()
	sign := 1
	if fs.data[fs.idx] == '-' {
		sign = -1
		fs.idx++
	}
	val := 0
	for fs.idx < fs.n {
		c := fs.data[fs.idx]
		if c < '0' || c > '9' {
			break
		}
		val = val*10 + int(c-'0')
		fs.idx++
	}
	return val * sign
}

func (fs *FastScanner) nextString() string {
	fs.skip()
	start := fs.idx
	for fs.idx < fs.n && fs.data[fs.idx] > ' ' {
		fs.idx++
	}
	return string(fs.data[start:fs.idx])
}

func can(T, parity, a, b int) bool {
	if parity == 0 {
		if T <= 2*b-2 {
			return true
		}
		if a <= 2*b-1 && T >= 2*a && T <= 4*b-2 {
			return true
		}
		return false
	}
	return a <= 2*b-1 && T >= a && T <= 3*b-2
}

func main() {
	fs := NewFastScanner()
	q := fs.nextInt()
	var out strings.Builder

	for ; q > 0; q-- {
		a := fs.nextInt()
		b := fs.nextInt()
		s := fs.nextString()

		blocks := make([]int, 0)
		good, bad := 0, 0

		cnt := 0
		for i := 0; i < len(s); i++ {
			if s[i] == '.' {
				cnt++
			} else if cnt > 0 {
				blocks = append(blocks, cnt)
				if cnt >= a && cnt < 2*b {
					good++
				} else if cnt >= b {
					bad++
				}
				cnt = 0
			}
		}
		if cnt > 0 {
			blocks = append(blocks, cnt)
			if cnt >= a && cnt < 2*b {
				good++
			} else if cnt >= b {
				bad++
			}
		}

		ok := false
		for _, L := range blocks {
			if L < a {
				continue
			}
			isGood := 0
			isBad := 0
			if L < 2*b {
				isGood = 1
			} else {
				isBad = 1
			}
			if bad-isBad != 0 {
				continue
			}
			parity := (good - isGood) & 1
			if can(L-a, parity, a, b) {
				ok = true
				break
			}
		}

		if ok {
			out.WriteString("YES\n")
		} else {
			out.WriteString("NO\n")
		}
	}

	w := bufio.NewWriterSize(os.Stdout, 1<<20)
	w.WriteString(out.String())
	w.Flush()
}