#include <bits/stdc++.h>
using namespace std;
char s[300005];
bool getCutu(int n, int a, int b) {
  vector<int> vec, lns;
  vec.push_back(0);
  for (int i = 1; i <= n; i++) {
    if (s[i] == 'X') vec.push_back(i);
  }
  vec.push_back(n + 1);
  for (int i = 0; i + 1 < vec.size(); i++) {
    int l = vec[i + 1] - vec[i] - 1;
    if (l >= b) lns.push_back(l);
  }
  sort(lns.begin(), lns.end());
  if (2 * b <= a) {
    if (lns.size() != 1) return false;
    return (lns[0] >= a && lns[0] <= a + 2 * b - 2);
  } else {
    int sz = lns.size();
    if (sz == 0 || lns[0] < a) return false;
    if (sz > 1 && lns[sz - 2] >= 2 * b) return false;
    if (lns[sz - 1] < 2 * b) return sz % 2;
    int boro = lns[sz - 1];
    for (int i = 0; i + a <= boro; i++) {
      int j = boro - i - a;
      if (i >= b && i < a) continue;
      if (j >= b && j < a) continue;
      if (i >= 2 * b) continue;
      if (j >= 2 * b) continue;
      int x = sz % 2;
      if (i >= a) x ^= 1;
      if (j >= a) x ^= 1;
      if (x) return true;
    }
    return false;
  }
}
int main() {
  int q;
  scanf("%d", &q);
  while (q--) {
    int a, b;
    scanf("%d %d %s", &a, &b, s + 1);
    printf("%s\n", getCutu(strlen(s + 1), a, b) ? "YES" : "NO");
  }
  return 0;
}
