小红的陡峭值
题号:NC268970
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

小红定义一个数组的陡峭值为相邻两数差的绝对值之和。
现在小红拿到了一个长度为n的、仅由正整数组成的数组,但她有一些元素看不清了,只记得数组的陡峭值恰好等于 1。
小红希望你能还原整个数组,你能帮帮她吗?

输入描述:

第一行输入一个正整数n,代表数组的大小。
第二行输入n个整数a_i,其中如果a_i为 0 代表小红看不清该元素,大于 0 代表能看清该元素。
2 \leq n \leq 10^5
0\leq a_i \leq 10^9

输出描述:

如果无解,请输出 -1。
否则输出n个正整数,用空格隔开,代表小红还原的数组。
有多解时输出任意即可。
示例1

输入

复制
4
9 0 0 8

输出

复制
9 9 9 8
示例2

输入

复制
3
0 1 0

输出

复制
1 1 2
示例3

输入

复制
5
0 1 2 1 0

输出

复制
-1