编程题
### 问题描述
最近刷短视频刷多了,蓝桥A梦看着大神们把许多的多米诺骨牌排列出各种样子后又推倒,感觉相当的解压啊!
所以它决定自己也来堆一堆,他面前有 $n$ 个骨牌,每个骨牌的长度是 $a_i$ 。
众所周知,多米诺骨牌的数量越多越好,所以他要从里面尽可能多的取出骨牌来。而且为了倒下的时候足够连贯,蓝桥A梦希望所有取出来的骨牌中,最小的骨牌和最大的骨牌高度差不超过 $k$ 。
现在蓝桥A梦想知道它最多能取出多少骨牌,并把这些骨牌按照顺序输出。
如果有多种取法,就输出其中最小的骨牌尽可能小的取法。
### 输入格式
第一行输入二个整数 $n$ 和 $k$ ,表示一共有 $n$ 个骨牌,且取出的最小的骨牌和最大的骨牌高度差不超过 $k$ 。
第二行输入 $n$ 个整数 $a_i$ ,表示第 $i$ 个骨牌的长度。
### 输出格式
第一行输出一个整数 $m$ ,表示最多能取出的骨牌数。
第二行按照原来的顺序,输出取出的骨牌的高度。
### 样例输入1
```text
7 2
2 5 4 3 6 6 3
```
### 样例输出1
```text
4
2 4 3 3
```
### 样例说明
最多可以取 $4$ 个骨牌,并使得最大最小的骨牌高度差不超过 $2$ 。
一共有两种取法:$2、4、3、3$ 和 $5、4、6、6$ ,但前者中最小的骨牌高度为 $2$ ,后者最小的骨牌高度为 $4$ ,所以我们选择前一种取法。
### 评测数据规模
对于所有评测数据,$1\leq n \leq 1\times 10^5$,$1\leq k \leq 1\times 500$,$1\leq a_i \leq 1\times 10^6$。