回响
题号:NC290854
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}Askalana往前走着,她看到了你绞尽脑汁解锁遗迹大门的过程,朦胧间,画面突变,她发现她正站在门口,对着大门发呆。
\hspace{15pt}本题与牛客周赛 Round 83《B.冒险猫猫参上!!》共享部分题目背景,这一部分我们使用特殊的格式标注。
〖引用开始〗
\hspace{15pt}要打开遗迹,需要解开遗迹门口的石子谜题。一共有 n 个空格子和 3 \times n 颗石子,你需要构造一个方案,向每一个空格子中放入石子,使得相邻格子中的石子数之差的绝对值恰好为 1。更具体地,对于第 i \left( 1 \lt i \lt n \right) 个格子,记你在其中放入了 a_i 颗石子,则需要满足 \left| a_{i - 1} - a_{i} \right| = 1、且 \left| a_{i} - a_{i + 1} \right| = 1
\hspace{15pt}石子可以不用完,但是每一个格子都不能为空。
〖引用结束〗
\hspace{15pt}门口排成一列有 n 个格子,其中部分格子上预先放置了石子,而其他格子为空。预置的石子因受到封印无法修改。你需要向每一个空的格子中放入一些石子,使得最后任意相邻的两个格子上石子数的绝对差均恰好为 1
\hspace{15pt}但这次,由于在门口解谜的变成了大魔法师Askalana,她创造了无数的石子以供使用。现在,你需要帮Askalana找到一种可行的堆放方案,使得可以再次打开大门,重返遗迹。
\hspace{15pt}形式化的,给定由 n 个整数构成的数组 \{a_1, a_2, \dots, a_n\},你需要将其中为 0 的每一个元素独立地替换为正整数,使得对于第 i \left( 1 \lt i \leqq n \right) 个元素均有 \lvert a_{i - 1} - a_{i} \rvert = 1 成立。如果无解,直接输出 -1

输入描述:

\hspace{15pt}第一行输入一个整数 n \left(1 \leqq n \leqq 2 \times 10^5\right) 代表石子堆数。 
\hspace{15pt}第二行输入 n 个整数 a_1, a_2, \dots, a_n \left(0 \leqq a_i \leqq 3 \times n\right),其中第 i 个整数 a_i 代表第 i 个位置初始石子数量。

输出描述:

\hspace{15pt}如果不存在可行的方案,直接输出 -1。否则,在一行上输出 n 个整数 p_1, p_2, \dots, p_n \left(1 \leqq p_i \leqq 10^7\right) 代表每一个位置最终的石子数量。你需要保证,对于任意 i \left( 1 \lt i \leqq n \right) 均有 \lvert p_{i - 1} - p_{i} \rvert = 1,同时对于每个预置位置 i(即 a_i \neq 0),必须有 p_i = a_i

\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
4
0 2 0 2

输出

复制
1 2 1 2

说明

\hspace{15pt}第一、三个格子的放法不唯一,放入 3 个石子也满足题意。
示例2

输入

复制
4
1 2 3 4

输出

复制
1 2 3 4
示例3

输入

复制
4
1 0 0 1

输出

复制
-1