#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<climits>
#include<stack>
#include<queue>
#include<set>
#include<array>
#include<cstdlib>
#include <stdio.h>
#include<string>
#include<sstream>
#include<cctype>
#include<cstring>
#include<ctime>
#include<functional>
#include<numeric>
#include<map>
#include<list>
#include<bitset>
using namespace std;

char str[2][1000+5];

int main()
{
    int t;
    scanf("%d", &t);
    while (t--)
    {
        int n, m;
        scanf("%d%d%s", &n, &m, str[0]);
        for (int i = 0; i < n; i++)
            str[0][i] -= '0';
        bool flag = true;
        int i;
        for (i = 1; i <= m && flag; i++)
        {
            flag = false;
            if (str[(i - 1) % 2][1]) 
            {
                str[i % 2][0] = 1; 
                if (str[i % 2][0] != str[(i - 1) % 2][0]) 
                    flag = true;
            }
            else
            {
                str[i % 2][0] = str[(i - 1) % 2][0];
            }
            if (str[(i - 1) % 2][n - 2]) 
            {
                str[i % 2][n - 1] = 1;
                if (str[i % 2][n - 1] != str[(i - 1) % 2][n - 1]) 
                    flag = true;
            }
            else
            {
                str[i % 2][n - 1] = str[(i - 1) % 2][n - 1];
            }
            for (int j = 1; j < n - 1; j++)
            {
                if (str[(i - 1) % 2][j - 1] != str[(i - 1) % 2][j + 1])
                {
                    str[i % 2][j] = 1;
                    if (str[i % 2][j] != str[(i - 1) % 2][j]) 
                    flag = true;
                }
                else
                {
                    str[i % 2][j] = str[(i - 1) % 2][j];
                }
            }
        }
        for (int x = 0; x < n; x++)
        {
            putchar(str[(i - 1) % 2][x] + '0');
        }
        putchar('\n');
    }
    return 0;
}