2502: 重复段的删除

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:14 解决:6

题目描述

Bob 看见一个字符串,它包含许多不同的字符,这些字符被标记成不同的数字,但同一个字
符串中每个字符能在字符串出现最多 10 次。Bob 不喜欢这个字符串,因为它包含重复段:一段长
为 x 的字符串的重复段是一个长为 2x 的字符串,且其前半个字符串与后半个字符串每个字符对
应相同。Bob 开始从该字符串中删除所有重复段,他按以下规则进行:如果可能,Bob 选择最短
的重复段,如果它不唯一,他选择最左边的那个,并删除该重复段的左半边和它左侧的所有东西。
现在给出 Bob 看见的字符串,找出其被 Bob 按上述规则删除所有重复子串之后的样子。

输入

输入文件第一行包含整数 n,表示字符串的长度。
下面一行包含 n 个由空格隔开的在 0 到 10^9 范围内的数字,数字表示字符串中的字符。
数据保证每个字符在字符串中最多出现 10 次。

输出

输出文件的第一行包含 Bob 删除后遗留的子串的长度。
第二行输出 Bob 按照上述方式删除所有重复段后遗留的子串(每个字符由一个空格隔开)。

样例输入 复制

6
1 2 3 1 2 3

样例输出 复制

3
1 2 3

提示

【 输 入 样 例 2】
7
4 5 6 5 6 7 7
【 输 出 样 例 2】
1
7


60%的数据满足: n<=1000;
100%的数据满足:1<=n<=100000。