#P15748. [JAG 2024 Summer Camp #3] Halfway Through the Book

[JAG 2024 Summer Camp #3] Halfway Through the Book

说明

JAG 出版社出版了一本名为《排列汇编大全》的书。这本书非常厚,总共有 2N12^N - 1 页。每一页都包含一个长度为 NN 的排列 P\mathbf{P}(即 (1,,N)(1, \ldots, N) 的一个重排)的一个非空子序列(不一定是连续的)。每个子序列按照字典序恰好出现一次。换句话说,在第 kk 页上,你会找到所有非空子序列中,字典序第 kk 小的 P\mathbf{P} 的子序列。

你曾试图读完这本书,但放弃了。不过,你想向朋友们炫耀你读了一半,因此你需要找到正中间那一页(即第 2N12^{N-1} 页)上的序列。你的任务是确定这个序列。

输入格式

输入包含一个单独的测试用例,格式如下。

$$\begin{aligned} & N \\ & P_1 \ P_2 \ \ldots \ P_N \end{aligned}$$

第一行包含一个整数 NN,表示排列 P\mathbf{P} 的长度。NN 的取值范围是 1110,00010,000。第二行包含 NN 个整数 P1,,PNP_1, \ldots, P_N1PiN1 \leq P_i \leq N),表示排列 P\mathbf{P}

输出格式

在第一行,输出一个整数 MM,表示第 2N12^{N-1} 页上序列的长度。在第二行,输出 MM 个整数 Q1,Q2,,QMQ_1, Q_2, \ldots, Q_M,表示第 2N12^{N-1} 页上的子序列。

3
2 1 3
2
2 1
6
3 6 2 1 5 4
4
3 6 1 5