在CS:GO中,使用汰换合同可以将多个低品质的武器换成一个高品质的武器。现在Leohh的库存中共有 nnn 个武器,从左到右摆成一列,第 iii 个武器的品质值为 aia_iai 。对于第 iii 个和第 jjj 个武器来说 (i<j)(i<j)(i<j) ,若满足它们的品质值相同即 ai=aja_i=a_jai=aj ,则可以使用汰换合同,用武器 iii 和 jjj 换回来一个品质值为 2ai2a_i2ai 的武器,新武器放在武器 jjj 原来的位置。
为了方便操作,每次汰换时,Leohh会先确定一个最小的品质值 bbb 满足至少有两个武器的品质值等于 bbb ,然后在所有品质值等于 bbb 的武器中,挑最靠左的两个进行汰换。Leohh并不知道自己会血赚还是血亏,所以想问问你,如果不断地使用汰换合同直到不能汰换(即不存在两把品质值相同的武器),最终会剩下多少个武器,这些武器的品质值分别是什么?
第一行一个整数 nnn ,表示武器的数量
第二行 nnn 个整数 a1⋯ana_1\cdots a_na1⋯an ,表示武器的品质值
第一行一个整数 kkk ,表示最终剩下武器的数量
第二行 kkk 个整数,表示最终剩下武器的品质值
8 1 4 2 4 3 2 5 1
5 8 3 4 5 2
2≤n≤2×105,1≤ai≤1092\leq n\leq 2\times 10^5,1\leq a_i\leq 10^92≤n≤2×105,1≤ai≤109
样例解释:[1,4,2,4,3,2,5,1]→[4,2,4,3,2,5,2]→[4,4,3,4,5,2]→[8,3,4,5,2][1, 4, 2, 4, 3, 2, 5, 1] \rightarrow [4, 2, 4, 3, 2, 5, 2] \rightarrow [4, 4, 3, 4, 5, 2] \rightarrow [8, 3, 4, 5, 2][1,4,2,4,3,2,5,1]→[4,2,4,3,2,5,2]→[4,4,3,4,5,2]→[8,3,4,5,2]