#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int gcd(int a, int b) {
  if (b == 0) return a;
  a %= b;
  return gcd(b, a);
}
bool compare(long long i, long long j) { return i > j; }
bool mysort(pair<pair<long long, long long>, long long> a,
            pair<pair<long long, long long>, long long> b) {
  if (a.first.first != b.first.first) {
    return a.first.first > b.first.first;
  }
  return a.first.second > b.first.second;
}
struct HASH {
  std::size_t operator()(const pair<int, int> &x) const {
    return hash<long long>()((long long)x.first ^ (long long)x.second << 32);
  }
};
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  long long t;
  cin >> t;
  while (t--) {
    string str;
    cin >> str;
    long long x;
    cin >> x;
    vector<int> ob(str.size(), 0);
    vector<char> ans(str.size(), '#');
    long long n = str.size();
    int flag = 0;
    for (int i = 0; i < str.size(); i++) {
      if (str[i] == '0') {
        if (i + x < n) ans[i + x] = '0';
        if (i - x >= 0) ans[i - x] = '0';
      }
    }
    for (int i = 0; i < n; i++) {
      if (ans[i] == '#') {
        ans[i] = '1';
      }
    }
    for (int i = 0; i < n; i++) {
      if (str[i] == '0') {
        if (i + x < n && ans[i + x] != '0') {
          flag = 1;
          break;
        }
        if (i - x >= 0 && ans[i - x] != '0') {
          flag = 1;
          break;
        }
      } else {
        int count = 0;
        if (i + x < n && ans[i + x] == '1') {
          count++;
        }
        if (i - x >= 0 && ans[i - x] == '1') {
          count++;
        }
        if (count >= 1) {
          continue;
        } else {
          flag = 1;
          break;
        }
      }
    }
    if (flag) {
      cout << -1 << endl;
      ;
    } else {
      string a = "";
      for (int i = 0; i < n; i++) {
        a += ans[i];
      }
      cout << a << endl;
      ;
    }
  }
}
