#dwango2016qualb. [dwango2016qual_b]積み鉛筆
[dwango2016qual_b]積み鉛筆
问题文
尼瓦戈君喜欢堆叠铅笔。今天他决定用以下方法堆叠铅笔。首先,将支铅笔在地板上左右排列成一列。第支铅笔的长度为。
然后,将支铅笔堆叠在相邻的两支铅笔之间。堆叠在上面的铅笔的长度等于下面两支铅笔中较长的一支。换句话说,设堆叠在上面的铅笔中第支铅笔的长度为,则有。
例如,如上图所示的铅笔堆叠方式。这里,圆圈中的数字表示铅笔的长度。
当从上方看堆叠的铅笔时,只能看到堆叠在上面的支铅笔的长度,而无法知道底部的支铅笔的长度。在这种情况下,尼瓦戈君想到了一种游戏。你的任务是编写一个能够解答这个游戏的程序。然而,保证存在一组作为底部的铅笔长度的组合。
换句话说,当给定由个数字组成的序列时,求解满足所有的条件的铅笔长度序列。
输入输出
输入从标准输入读取,具有以下格式。
…
- 第行,给出作为底部的铅笔数量。
- 第行,以空格分隔给出堆叠在上面的铅笔的长度。
- 满足。
输出
以空格分隔,将底部的铅笔长度以单行输出。在输出末尾换行。
示例1
4
3 5 5
输出示例1
1 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