#include <bits/stdc++.h>
using namespace std;
#define ios ios::sync_with_stdio(0)
#define endl '\n'
#define int long long
#define ar array<int, 2>
#define arr array<int, 3>
const int N = 2e5 + 5, M = 2 * N;
const int inf = 0x3f3f3f3f;
int mod = 998244353; //1e9+7;
int t, n, m, k;
signed main()
{
ios;
#ifdef DEBUG
freopen("../1.in", "r", stdin);
#endif
cin >> t;
while (t--)
{
cin >> n >> k;
string s;
cin >> s;
bool f = 1;
for (int i = 0; i < n; ++i)
{
if (s[i%k] != '?' &&s[i] != '?' && s[i] != s[i % k])
{
f = 0;
break;
}
if (s[i] != '?')
s[i % k] = s[i];
}
int l = 0, r = 0;
if (f)
{
for (int i = 0; i < k; ++i)
if (s[i] == '0')
l++;
else if(s[i]=='1')
r++;
}
cout << (f && l <= k / 2 && r <= k / 2 ? "YES" : "NO") << endl;
}
};
1363A - Odd Selection | 131B - Opposites Attract |
490C - Hacking Cypher | 158B - Taxi |
41C - Email address | 1373D - Maximum Sum on Even Positions |
1574C - Slay the Dragon | 621A - Wet Shark and Odd and Even |
1395A - Boboniu Likes to Color Balls | 1637C - Andrew and Stones |
1334B - Middle Class | 260C - Balls and Boxes |
1554A - Cherry | 11B - Jumping Jack |
716A - Crazy Computer | 644A - Parliament of Berland |
1657C - Bracket Sequence Deletion | 1657B - XY Sequence |
1009A - Game Shopping | 1657A - Integer Moves |
230B - T-primes | 630A - Again Twenty Five |
1234D - Distinct Characters Queries | 1183A - Nearest Interesting Number |
1009E - Intercity Travelling | 1637B - MEX and Array |
224A - Parallelepiped | 964A - Splits |
1615A - Closing The Gap | 4C - Registration System |