编程题
### 问题描述
给定一个长度为 $N$ 的整数数组 $A$,以及一个整数 $K$。
你可以对这个数组进行以下操作:
- 选择索引 $i$ 和 $j$,满足 $|i-j| \geq K$,然后交换 $A_i$ 和 $A_j$。
- 也就是说,你可以交换两个元素,只要它们的距离至少为 $K$。
你的任务是通过多次(包括零次)进行上述操作,使得数组 $A$ 变为字典序最小的数组。
### 输入格式
第一行输入一个整数 $T$,表示测试用例的数量。
每个测试用例包含两行:
- 第一行输入两个整数 $N$ 和 $K$。
- 第二行输入 $N$ 个整数,分别是 $A_1$,$A_2$,...,$A_N$。
### 输出格式
对于每个测试用例,输出一行,表示操作多次后得到的字典序最小的数组。
### 样例输入
```text
2
3 2
3 2 1
4 3
3 2 4 1
```
### 样例输出
```text
1 2 3
1 2 4 3
```
### 说明
- 样例中的第一个测试用例:初始时,数组为 $A = [3, 2, 1]$。选取 $i = 1, j = 3$,进行操作后数组变为 $A = [1, 2, 3]$,这是可以得到的字典序最小的数组。
- 样例中的第二个测试用例:初始时,数组为 $A = [3, 2, 4, 1]$。选取 $i = 1, j = 4$,进行操作后数组变为 $A = [1, 2, 4, 3]$,这是可以得到的字典序最小的数组。
### 评测数据范围
$1 \leq T \leq 10^4$。
$1 \leq N, K \leq 10^5$。
$1 \leq A_i \leq 10^9$。
所有测试用例中 $N$ 的和不超过 $10^6$。