著名的诗人 Byteasar 想要出版一本包含他最近创作的 $n$ 首诗的诗集。每页纸最多可以容纳 $s$ 行文字。诗歌按顺序排版,中间没有空行。每首诗由一行标题和随后的正文组成,第 $i$ 首诗的正文占用 $a_i$ 行。
出于美观考虑,诗歌的标题不能印在页面的最后一行。因此,如果前一首诗恰好结束在页面的倒数第二行,那么该页的最后一行必须留空。我们将这样的空行称为“内部空行”;注意,最后一首诗之后的任何空行都不属于内部空行。Byteasar 的诗可以以任何顺序排列,每种排列都会产生一定数量的内部空行。为了节省印刷成本,Byteasar 希望找到一种排列顺序,使得内部空行的数量最少。
输入格式
输入的第一行包含两个整数 $n$ 和 $s$ ($n \ge 1, 2 \le s \le 1\,000\,000$),用空格分隔,分别表示诗的数量和每页容纳的行数。诗的编号为 $1$ 到 $n$。
第二行包含一个由 $n$ 个整数组成的序列 $a_1, a_2, \dots, a_n$ ($1 \le a_i \le 1\,000\,000$),用空格分隔,表示各首诗正文的行数(即不包含标题行)。
输出格式
输出两行。第一行包含一个整数 $k$,表示最少的内部空行数量。第二行包含一个由 $1$ 到 $n$ 的 $n$ 个不同整数组成的序列,表示达到 $k$ 个内部空行的诗歌排列顺序。序列中的数字应以空格分隔。如果存在多种方案,输出其中任意一种即可。
样例
输入 1
3 5 2 5 1
输出 1
0 2 3 1
说明
样例的解释:按输入顺序排列诗歌会产生一个内部空行:
最优的排列顺序不会产生内部空行:
子任务
测试集由以下子任务组成。每个子任务内可能包含多个测试点。
| 子任务 | 数据范围 | 分值 |
|---|---|---|
| 1 | $n \le 10$ | 10 |
| 2 | $n \le 500\,000$, 所有 $a_i$ 互不相同, $a_i \le s$ | 20 |
| 3 | $n \le 1000$ | 25 |
| 4 | $n \le 500\,000$ | 45 |