#arc069c. [arc069_c]Frequency

[arc069_c]Frequency

题目描述

Snuke喜欢构建整数序列。

NN堆石头,从11NN进行编号。第ii堆的石头数量为aia_i

Snuke将构建一个长度为ΣaiΣa_i的整数序列ss,具体步骤如下:

  1. 在剩余石头最多的堆中,选择索引最小的堆,将其编号xx添加到ss的末尾。
  2. 从剩余石头数大于等于11的堆中选择一堆,取出一块石头。
  3. 如果还存在剩余石头的堆,则返回到步骤1。否则,终止过程。

我们感兴趣的是能够构建的字典序最小的序列。对于1,2,3,...,N1,2,3,...,N这些整数,它们在字典序最小的序列中出现了多少次?

约束条件

  • 1N1051 \leq N \leq 10^{5}
  • 1ai1091 \leq a_i \leq 10^{9}

输入

从标准输入读入输入数据,格式如下:

NN a1a_1 a2a_2 ...... aNa_{N}

输出

打印NN行。第ii行应该包含整数ii在能够构建的字典序最小序列中出现的次数。


示例输入 1

2
1 2

示例输出 1

2
1

字典序最小的序列构建如下:

  • 由于剩余石头数最多的堆是第22堆,将22添加到ss的末尾。然后从第22堆取出一块石头。
  • 由于剩余石头数最多的堆是第11堆和第22堆,将11添加到ss的末尾(我们选择索引最小的堆)。然后从第22堆取出一块石头。
  • 由于剩余石头数最多的堆是第11堆,将11添加到ss的末尾。然后从第11堆取出一块石头。

得到的序列为(2,1,1)(2,1,1)。在这个序列中,11出现了两次,22出现了一次。


示例输入 2

10
1 2 1 3 2 4 2 5 8 1

示例输出 2

10
7
0
4
0
3
0
2
3
0