int main() {
int t;
cin >> t;
int n,m;
string s;
for(int i =0; i<t; i++) {
bool ans = true;
cin >> n >> m >> s;
int flag =0,zeroNums = 0,oneNums = 0,dist = 0;
int t1 = s.find('1');
int t2 = s.find('1',t1+1);
if(t1!=string::npos&&t2!=string::npos) {
dist = t2-t1-1;
} else if(t1==string::npos&&t2==string::npos) {
dist = -1;
}
if(dist>n) {
ans = false;
cout << "No\n";
continue;
} else if(dist == -1) {
if(s.size()>n) {
cout << "No\n";
} else {
cout << "Yes\n";
}
continue;
}
int cnt = 0;
for(int i =0; i<m; i++) {
if(s[i] == '0') {
cnt ++;
} else {
if(cnt>dist) {
ans = false;
break;
}
cnt = 0;
}
}
if(!ans) {
cout << "No\n";
} else {
cout << "Yes\n";
}
}
return 0;
}