你正在设计一款名为 Bombardment 的老式游戏,其目标是通过轰炸来摧毁若干个点。你目前还不确定游戏的主题,只知道核心机制应该涉及轰炸。
需要摧毁的点位于实数轴上,即每个点仅仅是一个 $x$ 坐标。轰炸是一种攻击,它会摧毁距离轰炸中心固定距离 $R$ 内的所有点。更具体地说,单次轰炸通过选择一个整数点 $X$(中心)来指定。所有位于区间 $[X - R, X + R]$ 内的点都将被摧毁。
在投入精力设计主题、添加精美图形等之前,你决定先对该游戏的一个基础版本进行测试。有趣的是,大多数测试者似乎采用了贪心策略:每次轰炸都选择能摧毁当前单次轰炸中最多点数的方案。有时,这会导致玩家使用的轰炸次数多于最少可能的轰炸次数。你希望设计一个程序来模拟这种策略,这将有助于你设计出有趣的关卡。
也就是说,你的任务是编写一个程序来模拟以下过程:只要还有剩余的点,就选择一个轰炸中心 $X$,使得该次轰炸能摧毁剩余点中数量最多的点。如果存在多个这样的 $X$ 值,则每次都选择其中最小的 $X$。
输入格式
输入的第一行包含两个整数 $N$ ($1 \le N \le 5 \times 10^5$) 和 $R$ ($1 \le R \le 10^8$)。下一行包含 $N$ 个整数,描述这些点的 $x$ 坐标,每个坐标都在范围 $[-10^8, 10^8]$ 内。多个点可能共享同一个 $x$ 坐标。此外,保证最大 $x$ 坐标与最小 $x$ 坐标之差最多为 $40 \cdot R$。
输出格式
输出的第一行包含一个整数 $B$,表示执行的轰炸次数。第二行包含 $B$ 个整数,按执行顺序描述每次轰炸的 $x$ 坐标。
样例
样例输入 1
7 1 1 2 3 3 4 4 5
样例输出 1
3 3 0 4
样例输入 2
6 1 5 -2 5 0 1 2
样例输出 2
3 1 4 -3
样例输入 3
6 2 5 -2 5 0 1 2
样例输出 3
2 0 3
样例输入 4
6 3 5 -2 5 0 1 2
样例输出 4
2 2 -5