故障机器人的完美牌组
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

故障机器人非常喜欢玩”集中冰“牌组,现在他手里有 n 张牌,第 i 张牌的威力是 a_i
现在他在尖塔探索时遇到了商人,可以与商人进行最多一次交易,每次交易可以选择两个不同牌的索引 iji \neq j),之后执行 a_i := a_i + a_j 并删除第 j 张牌,同时保持剩余牌的顺序不变。
故障机器人的牌组的字典序越大,威力就越大。故障机器人马上就要挑战精英红地精了,他想要知道如何交易才能使他的牌组威力最大。
【字典序】:从两个数组的第一个元素开始逐个比较,直到找到第一个不同的元素,较大元素所在的数组的字典序较大。如果比较到其中一个数组的结尾时依旧全部相同,则较短的数组字典序更小。

输入描述:

第一行,输入一个整数 n (1 \leq n \leq 2 \cdot 10^5) ,表示牌组中牌的数量。
第二行,输入 n 个整数 a_1, a_2, ..., a_n0 \leq a_i \leq 10^9),其中 a_i 表示第 i 张牌的威力。

输出描述:

第一行,输出一个整数,表示剩余牌的数量。
第二行,按顺序输出剩余牌中每张牌的威力值,用空格隔开。
示例1

输入

复制
3
1 2 2

输出

复制
2
3 2
示例2

输入

复制
3
0 2 0

输出

复制
2
2 0