编程题
### 问题描述
小然有一个二进制字符串 $S$。他发明了一台时间机器,这台机器每秒钟会对 $S$ 进行以下操作:
如果 $S_i$ 等于 $1$,依次进行如下操作:
1. 将 $S_i$ 变为 $0$。
2. 如果 $ S_{i-1}$ 存在并且等于 $0$,将它变为 $1$。
3. 如果 $ S_{i+1}$ 存在并且等于 $0$,将它变为 $1$。
**注意:所有位的变化是同时发生的**。
例如,如果初始的 $S = 010$,那么一秒钟后,$S$ 将变为 $101$(因为第二位是 1,所以它变为 0,并且它的两个邻居都从 0 变为 1)。再过一秒钟,$S$ 将变回 $010$。这是因为第一位和第三位都是 1,所以它们都变为 0,而第二位是 0,且它的两个邻居都是 1,所以它变为 1。
现在,小然想要知道在经过 $K$ 秒钟后,$S$ 将变为什么。请你帮助小然找出答案。
### 输入格式
输入的第一行包含一个整数 $T$,表示测试用例的数量。
每个测试用例由两行组成:
- 第一行包含两个空格分隔的整数 $N$ 和 $K$,表示二进制字符串的长度和时间机器工作的秒数。
- 第二行是一个长度为 $N$ 的二进制字符串 $S$。
### 输出格式
对于每个测试用例,输出一行一个二进制字符串,表示经过 $K$ 秒钟后的 $S$。
### 样例输入
```text
3
3 1
101
5 2
10001
14 3
10011010111000
```
### 样例输出
```text
010
10101
01100101010101
```
### 说明
在第一个测试用例中,经过一秒钟后,$S$ 变为 $010$。
在第二个测试用例中,经过一秒钟后,$S$ 变为 $01010$,再经过一秒钟,$S$ 变为 $10101$。
### 评测数据范围
$1 \leq T \leq 1000$。
$1 \leq N \leq 10^5$。
$1 \leq K \leq 10^9$。
每个测试样例 $N$ 的总和不超过 $10^6$。