#include <bits/stdc++.h>
using namespace std;
const int N = 1e6;
int Bit[N + 100], pre[N + 100], n;
void update(int idx, int val) {
  while (idx <= n) {
    Bit[idx] += val;
    idx += (idx & -idx);
  }
}
int query(int idx) {
  int total = 0;
  while (idx > 0) {
    total += Bit[idx];
    idx -= (idx & -idx);
  }
  return total;
}
int main() {
  int q;
  scanf("%d", &q);
  while (q--) {
    long long k;
    scanf("%d%lld", &n, &k);
    char str[n + 5];
    scanf("%s", str + 1);
    set<int> st;
    for (int i = 1; i <= n; i++) {
      Bit[i] = 0;
      pre[i] = 0;
      if (str[i] == '0') st.insert(i);
    }
    string ans = "";
    long long cnt = 0;
    for (int i = 1; i <= n; i++) {
      int ext = query(i);
      pre[i] = ext + pre[i - ext];
      if (str[i - pre[i]] == '0') {
        ans += '0';
        int cur = *st.begin();
        st.erase(cur);
      } else {
        if (st.empty()) {
          ans += '1';
        } else {
          int cur = *st.begin();
          if (cur - i + cnt <= k) {
            ans += '0';
            update(i, 1);
            update(cur + 1, -1);
            cnt += cur - i;
            st.erase(cur);
          } else {
            ans += '1';
          }
        }
      }
    }
    cout << ans << "\n";
  }
}
