#dwango2016qualb. [dwango2016qual_b]積み鉛筆

[dwango2016qual_b]積み鉛筆

问题文

尼瓦戈君喜欢堆叠铅笔。今天他决定用以下方法堆叠铅笔。首先,将NN支铅笔在地板上左右排列成一列。第ii支铅笔的长度为LiL_i

然后,将N1N-1支铅笔堆叠在相邻的两支铅笔之间。堆叠在上面的铅笔的长度等于下面两支铅笔中较长的一支。换句话说,设堆叠在上面的铅笔中第jj支铅笔的长度为KjK_j,则有Kj=maxLj,Lj+1K_j=max\\{L_j,L_{j+1}\\}

https://discovery2016-qual.contest.atcoder.jp/img/other/dwango2016qual/hdfksjghkjsdfhgkjsdhfgkjs/problem4.PNG

例如,如上图所示的铅笔堆叠方式。这里,圆圈中的数字表示铅笔的长度。

当从上方看堆叠的铅笔时,只能看到堆叠在上面的N1N-1支铅笔的长度,而无法知道底部的NN支铅笔的长度。在这种情况下,尼瓦戈君想到了一种游戏。你的任务是编写一个能够解答这个游戏的程序。然而,保证存在一组作为底部的铅笔长度的组合。

换句话说,当给定由N1N-1个数字组成的序列Kj\\{K_j\\}时,求解满足所有jj的条件Kj=maxLj,Lj+1(1jN1)K_j=max\\{L_j,L_{j+1}\\} (1 ≦ j ≦ N-1)的铅笔长度序列Li\\{L_i\\}


输入输出

输入从标准输入读取,具有以下格式。

NN K1K_1 K2K_2KN1K_{N-1}

  • 11行,给出作为底部的铅笔数量N(2N105)N (2 ≦ N ≦ 10^5)
  • 22行,以空格分隔给出堆叠在上面的铅笔的长度K1,...,KN1K_1,...,K_{N-1}
  • 满足1Ki109(1iN)1 ≦ K_i ≦ 10^9(1 ≦ i ≦ N)

输出

以空格分隔,将底部的铅笔长度L1,...,LNL_1,...,L_N以单行输出。在输出末尾换行。


示例1


4
3 5 5

输出示例1


1 3 5 4

当以长度为1,3,5,41, 3, 5, 4的铅笔作为底部,堆叠33支铅笔时,堆叠后的铅笔长度分别为3,5,53, 5, 5。因此,1,3,5,41, 3, 5, 4满足条件。


示例2


6
4 8 8 2 5

输出示例2


4 4 8 2 2 5

示例3


5
1 2 3 4

输出示例3


1 1 2 3 4