编程题
### 问题描述
在一个神秘的数字世界中,小然得到了一个长度为 $N$ 的二进制代码字符串 $S$。
他可以进行如下的操作:
- 选择一个整数 $i$($1 \leq i \leq N-2$),将子串 $S_i S_{i+1} S_{i+2}$ 替换为 "100"。
他发现,经过操作后的代码字符串可能有多种,但他想得到字典序最小的代码字符串。请你帮助小然计算出,他可以得到的字典序最小的代码字符串是什么。
注意:字符串 $X$ 的字典序小于字符串 $Y$,当且仅当 $X_i < Y_i$,其中 $i$ 是 $X$ 和 $Y$ 第一个不同字符的位置。
### 输入格式
第一行输入一个整数 $T$,表示测试用例的数量。
每个测试用例包含两行:
- 第一行输入一个整数 $N$,表示二进制代码字符串 $S$ 的长度。
- 第二行输入一个长度为 $N$ 的二进制代码字符串 $S$。
### 输出格式
对于每个测试用例,输出一个字符串,表示字典序最小的代码字符串。
### 样例输入
```markdown
2
3
110
4
0001
```
### 样例输出
```markdown
100
0001
```
### 说明
样例中的第一个测试用例:你可以将 "110" 变为 "100"。因为 "100" 的字典序小于 "110",所以输出 "100"。
样例中的第二个测试用例:你应该保持 "0001" 不变,不进行任何操作,所以输出 "0001"。
### 评测数据范围
对于所有的测试用例,满足 $1 \leq T \leq 10^5$。
对于所有的测试用例,满足 $3 \leq N \leq 3 \times 10^5$。
所有测试用例中 $N$ 的和不超过 $3 \times 10^5$