5966 - 分割数列

通过次数

15

提交次数

72

Time Limit : 1 秒
Memory Limit : 512 MB

给你1个长度为n的数字序列,请你将数字序列分割成k段,每段中的最大值为Zi,请你计算下,当k=1....n时,每段的zi相加后的值最小是多少?,数字序列长度为1≤n≤8000,每个数字在1≤ai≤100000,

Input

第一行包含一个整数 n((1 \leq n \leq 8000)),表示数字序列大小。第二行包含 n 个整数 (a_1, a_2, \ldots, a_n),其中第 i 个整数 (a_i)((1 \leq a_i \leq 100000))为数字序列中元素的大小。

Output

输出 n 行,其中第 i 行包含一个整数,表示当 (k = i) 时的最小值。

Examples

Input

5
1 2 3 4 5

Output

5
6
8
11
15

Input

5
1 2 1 2 1

Output

2
3
4
6
7