黄金里奇为冒险岛勇士们举办了一个新的秘密保险箱活动。冒险岛勇士们可以通过在保险箱中输入密码来参与活动。此前举办的黄金保险箱和钻石保险箱活动,将奖品颁发给输入了最小唯一数字作为密码的勇士。
然而这一次,对于红宝石保险箱活动,黄金里奇计划投入大量资金,向所有冒险岛勇士发放相同数量的奖品。奖品的数量由冒险岛勇士们输入的密码决定。奖品数量的确定方式如下:
- 第 $i$ 个冒险岛勇士输入一个整数 $A_i$ 作为密码。($0 \le A_i \le 10^9$;$1 \le i \le N$)
- 设 $C_{lr}$ 为未在 $[A_l, A_{l+1}, \dots, A_{r-1}, A_r]$ 中出现的最小非负整数。($1 \le l \le r \le N$)
- 奖品数量是所有可能的 $C_{lr}$ 值列表中未出现的最小非负整数。
$$\{C_{11}, C_{22}, C_{33}, C_{12}, C_{23}, C_{13}\} = \{0, 0, 1, 0, 1, 3\} \to 2$$
冒险岛勇士们试图聚在一起以获得尽可能多的奖品,但他们人数太多了,未能在达成统一结论的情况下就输入了所有的密码。
作为一名冒险岛勇士,幻影(Phantom)也参加了红宝石保险箱活动,并希望获得尽可能多的奖品。看到所有密码都已输入,作为冒险岛最强神偷的幻影想出了一个计划,通过修改密码来最大化可以获得的奖品数量。
对于幻影来说,直接修改其他冒险岛勇士输入的密码是小菜一碟,但这很容易被发现。因此,他计划仅改变已输入密码 $A_1, A_2, \dots, A_N$ 的顺序。
请找出幻影应该如何重新排列密码,使得奖品数量最大化。
输入格式
第一行包含一个整数 $N$,表示参与活动的冒险岛勇士数量。($1 \le N \le 10^6$)
第二行包含 $N$ 个空格分隔的整数 $A_1, A_2, \dots, A_N$。($0 \le A_i \le 10^9$)
输出格式
第一行输出可以获得的最多奖品数量。
第二行输出重新排列后的 $A_1, A_2, \dots, A_N$,用空格分隔。如果有多个可能的答案,输出其中任意一个。
样例
输入样例 1
3 1 2 0
输出样例 1
4 1 0 2
输入样例 2
3 1 3 0
输出样例 2
3 1 3 0