FJ 有 $N$ ($1 \leq N \leq 10^5$) 头奶牛(编号分别为 $1 \ldots N$),它们排成一排。FJ 希望奶牛按编号从小到大排序,但不幸的是,它们目前是乱序的。虽然过去 FJ 使用过诸如“冒泡排序”之类的开创性算法来整理奶牛,但今天他感到非常懒惰。相反,他会一次对一头特定的奶牛大喊“整理好”。当被喊到时,这头奶牛会确保自己(从她的角度来看)不再处于乱序状态。只要她右边紧邻的奶牛编号比她小,她们就会交换位置。然后,只要她左边紧邻的奶牛编号比她大,她们就会交换位置。最后,这头奶牛完成了“整理”,此时她左边的奶牛编号比她小,而她右边的奶牛编号比她大。
FJ 想要挑选一个奶牛子集,然后遍历这个子集,依次对它们大喊(按编号从小到大的顺序),反复进行,直到所有 $N$ 头奶牛都排好序为止。例如,如果他选择了编号为 $\{2, 4, 5\}$ 的奶牛子集,那么他会先对 2 号奶牛大喊,然后是 4 号,最后是 5 号。如果 $N$ 头奶牛仍然没有排好序,他会根据需要再次对这些奶牛大喊,如此循环。
由于 FJ 不确定哪些奶牛在听,他想要最小化这个子集的大小。此外,FJ 认为数字 $K$ 非常幸运。请帮助他找到最小规模子集中字典序第 $K$ 小的子集,使得反复对它们大喊最终能使所有奶牛排好序。
如果子集 $S$ 中元素的列表(按升序排列)在字典序上小于子集 $T$ 中元素的列表(按升序排列),则称子集 $S \subseteq \{1,\dots,N\}$ 在字典序上小于 $T$。例如,$\{1, 3, 6\}$ 在字典序上小于 $\{1, 4, 5\}$。
子任务:在占总分 $3/16$ 的测试点中,$N \leq 6$ 且 $K = 1$。在占总分 $5/16$ 的额外测试点中,$K = 1$。在占总分 $8/16$ 的其余测试点中,无额外限制。
输入格式
第一行包含一个整数 $N$。第二行包含一个整数 $K$ ($1 \leq K \leq 10^{18}$)。第三行包含 $N$ 个空格分隔的整数,表示从左到右奶牛的编号。
保证至少存在 $K$ 个合法的子集。
输出格式
第一行输出最小子集的大小。接下来的行输出最小规模子集中字典序第 $K$ 小的子集的奶牛编号,每行一个,按升序排列。
样例
样例输入 1
4 1
4 2 1 3
样例输出 1
2
1
4
说明
我们从数组 $\mathtt{\:4\:\; 2\:\; 1\:\; 3\:}$ 开始。在 FJ 对 1 号奶牛大喊后,数组变为 $\mathtt{\:1\:\; 4\:\; 2\:\; 3\:}$。当 FJ 对 4 号奶牛大喊时,数组变为 $\mathtt{\:1\:\; 2\:\; 3\:\; 4\:}$。此时,数组已排好序。
Problem credits: Spencer Compton