#P1837. 序列种类数

序列种类数

题目描述

薯条哥有一个长度为mm的正整数序列,下表从11开始。

对于这个序列,薯条哥需要统计整个序列的数字种类数,记种类数为mm,之后对于每一种数字xx,记其出现次数为CxC_x

设函数f(x)f(x)表示在序列中从左到右第Cx/2\lceil C_x/2 \rceil个数字xx对应的下标,其中y\lceil y \rceil表示对yy向上取整,

例如0.5\lceil 0.5 \rceil=1,2=2\lceil 2 \rceil=2。最后你需要将所有f(x)f(x)按从小到大的顺序输出出来。

输入描述

第一行输入一个正整数n(1n105)n(1\le n\le 10^5) ,表示序列长度

第二行输入nn个由空格隔开的正整数a1,a2,.....an(1ai104)a_1,a_2,.....a_n(1\le a_i\le 10^4),表示该序列

输出描述

第一行输出一个正整数mm,表示序列中的数字种类数

第二行输出mm个由空格隔开的正整数,分别表示从小到大的顺序排序之后的函数值,末尾不要输出多余空格。

样例

输入1

9
3 4 5 5 3 4 4 5 3

输出1

3
4 5 6

样例解释

一共有3,4,53,4,5三种数字,其中f(3)=5,f(4)=6,f(5)=4f(3)=5,f(4)=6,f(5)=4 ,排序后就是4,5,64,5,6