#include <bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof(a))
#define ll long long
#define inf 0x3f3f3f3f
#define pn printf("NO\n");
#define py printf("YES\n");
using namespace std;
//快速幂 
ll mypow(ll a,ll b,ll m){a%=m;ll res=1;while(b>0){if(b&1)res=res*a%m;a=a*a%m;b>>=1;}return res;}
//最大公约数 
ll gcd(ll a,ll b){return b==0?a:gcd(b,a%b);}
//最小公倍数 
ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
//判断是不是平方数 
bool isSquare(int x) {int y = sqrt(x);return y * y == x;}

const int maxn=1e6+10;
int t,m,n;
char s[maxn];
int main()
{
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d%d",&n,&m);
		getchar();
		scanf("%s",s+1);
		int st=1,en=1;
		for(int i=1;i<=n;i++)
		{
			if(s[i]=='1'||s[i]=='2')
			{
				continue;
			}
			if(s[i]=='0')
			{
				st=en=-1; 
				for(int j=i-1;j>=1;j--) //前一个1 
				{
					if(s[j]=='1')
					{
						st=j;
						break;
					}
				}
				for(int j=i+1;j<=n;j++)//后一个1 
				{
					if(s[j]=='1')
					{
						en=j;
						break;
					}
				}
				//printf("%d %d**\n",st,en);
				if(st==-1&&en==-1)
				{
					continue;
				}
				else if(st==-1)
				{
					if(en-i<=m)
					{
						s[i]='2';
						continue;
					}
				}
				else if(en==-1)
				{
					if(i-st<=m) 
					{
						s[i]='2'; 
						continue;
					}
				}
				else if((en-i!=i-st)&&((en-i<=m)||(i-st<=m)))
				{
					s[i]='2';
				}
			}
		}
		for(int i=1;i<=n;i++)
		{
			if(s[i]!='0') printf("1");
			else printf("0");
		}
		printf("\n");
	}
	
}

/*
1
6 1
100000
*/