C0493 [CEOI2005Day1] Multi-key Sorting

内存限制:256 MB 时间限制:6000 ms

题目描述

Consider a table with rows and columns. The columns are numbered from $1$ to $C$. For simplicity's sake, the items in the table are strings consisting of lower case letters.

image.png

You are given the operation Sort(k) on such tables: Sort(k) sorts the rows of a table in the order of the values in column $k$ (while the order of the columns does not change). The sort is stable, that is, rows that have equal values in column $k$, remain in their original order. For example, applying Sort(2) to Table 1 yields Table 2. We are interested in sequences of such sort operations. These operations are successively applied to the same table. For example, applying the sequence Sort(2); Sort(1) to Table 1 yields Table 3. Two sequences of sort operations are called equivalent if, for any table, they have the same effect. For example, Sort(2); Sort(2); Sort(1) is equivalent to Sort(2); Sort(1). However, it is not equivalent to Sort(1); Sort(2), because the effect on Table 1 is different.

Task

Given a sequence of sort operations, determine a shortest equivalent sequence.

输入格式

The first line of the input contains two integers, $C$ and $N$. $C (1 ≤ C ≤  1 000 000)$ is the number of columns and $N (1 ≤ N ≤ 3 000 000)$ is the number of sort operations. The second line contains $N$ integers, $k_i (1 ≤ k_i ≤ C)$. It defines the sequence of sort operations Sort($k_1$); ...; Sort($k_N$).

输出

The first line of the output contains one integer, $M$, the length of the shortest sequence of sort operations equivalent to the input sequence (Subtask A). The second line contains exactly $M$ integers, representing a shortest sequence (Subtask B). You can omit the second line if you solve only Subtask A.

样例

样例输入 1

4 6 1 2 1 2 3 3

样例输出 1

3 1 2 3

提示