Bytina 有 $n$ 颗互不相同的珠子,编号为 $1$ 到 $n$,每颗珠子都有一个已知的价值。 她想用其中的一些珠子制作一条项链,但很难决定选择哪些珠子以及如何排列它们。为了简化选择,她决定完全忽略珠子的排列,即仅当两串项链所包含的珠子集合不同时,才认为它们是不同的。为了让选择更简单,她现在想在所有可能的项链之间引入一种顺序。
珠子的总价值是 Bytina 最重要的衡量标准。因此,总价值越高,项链在顺序中出现得越靠后。然而,如果有几条项链的总价值相同,则应根据它们所包含珠子的价值序列(按升序排列)进行字典序排序$^*$。
例如,考虑一个有四颗珠子的场景,其价值(按珠子编号顺序)分别为 $3, 7, 4, 3$。由这些珠子可以制作出 $16$ 种不同的项链,按 Bytina 的顺序排列如下:
| 项链编号 | 所选珠子价值 | 所选珠子总价值 | 所选珠子编号 |
|---|---|---|---|
| 1 | none | 0 | none |
| 2 | 3 | 3 | 1 |
| 3 | 3 | 3 | 4 |
| 4 | 4 | 4 | 3 |
| 5 | 3 3 | 6 | 1 4 |
| 6 | 3 4 | 7 | 1 3 |
| 7 | 7 | 7 | 2 |
| 8 | 4 3 | 7 | 3 4 |
| 9 | 3 7 | 10 | 1 2 |
| 10 | 3 4 3 | 10 | 1 3 4 |
| 11 | 7 3 | 10 | 2 4 |
| 12 | 7 4 | 11 | 2 3 |
| 13 | 3 7 3 | 13 | 1 2 4 |
| 14 | 3 7 4 | 14 | 1 2 3 |
| 15 | 7 4 3 | 14 | 2 3 4 |
| 16 | 3 7 4 3 | 17 | 1 2 3 4 |
最后,Bytina 拿定了主意!她想要她顺序中的第 $k$ 条项链。请告诉她那是哪一条!
输入格式
标准输入的第一行包含两个正整数 $n$ 和 $k$,由空格分隔,分别指定珠子的数量和 Bytina 顺序中所需的项链编号。输入的第二行包含一个由 $n$ 个正整数组成的序列 $a_1, a_2, \dots, a_n$,由空格分隔,指定了各颗珠子的价值。
你可以假设 Bytina 没有出错,并且确实至少存在 $k$ 条不同的项链。
输出格式
标准输出的第一行应打印一个整数:所需项链中珠子的总价值。第二行应打印所选珠子价值的升序序列,并用空格分隔。
$^*$ 如果序列 $i_1, \dots, i_p$ 是序列 $j_1, \dots, j_q$ 的前缀(即 $p < q, i_1 = j_1, \dots, i_p = j_p$),或者在两个序列不同的第一个位置上,第一个序列的元素小于第二个序列的元素(即存在 $u \in \{1, \dots, \min(p, q)\}$ 使得 $i_1 = j_1, \dots, i_{u-1} = j_{u-1}$ 且 $i_u < j_u$),则称序列 $i_1, \dots, i_p$ 在字典序上小于序列 $j_1, \dots, j_q$。
样例
输入 1
4 10 3 7 4 3
输出 1
10 1 3 4
子任务
测试集由以下子任务组成。在每个子任务中,可能有多个测试组。 每个子任务满足条件 $n, k \le 1\,000\,000$ 且 $a_i \le 10^9$。
如果对某个测试的回答不正确,但输出的第一行(项链中珠子的总价值)是正确的,则该测试将获得一半的分数(如果超过了一半的时间限制,则会进行相应的缩放)。请注意,这不仅适用于第二行输出不正确的情况,也适用于没有输出第二行,甚至输出超过两行的情况。
| 子任务 | 属性 | 分数 |
|---|---|---|
| 1 | $n \le 20, k \le 500\,000$ | 8 |
| 2 | $n \le 60, k \le 50\,000$ | 12 |
| 3 | $n \le 3\,000, n \cdot k \le 10^6, a_i \le 100$ | 14 |
| 4 | $n \cdot k \le 10^6$ | 16 |
| 5 | $n \cdot k \le 10^7$ | 20 |
| 6 | 无 | 30 |