题目描述
给定一个 N 个整数的序列 S=(S1,ldots,SN)。判断是否存在一个包含 N+2 个整数的序列 A=(A1,ldots,AN+2),满足以下条件。
- 对于每个 i(1leqileqN+2),有 0leqAi。
- 对于每个 i(1leqileqN),有 Si=Ai+Ai+1+Ai+2。
如果存在符合条件的序列,则输出一个这样的序列。
约束条件
- 1leqNleq3times105
- 0leqSileq109
输入
从标准输入中按以下格式给出输入:
N
S1 ldots SN
输出
如果存在满足条件的序列 A,则输出 Yes
;否则,输出 No
。当输出为 Yes
时,在一行中输出序列 A 的元素,以空格分隔。
A1 ldots AN+2
如果有多个满足条件的序列,可以输出任意一个。
示例输入 1
5
6 9 6 6 5
示例输出 1
Yes
0 4 2 3 1 2 2
我们可以验证对于每个 i(1leqileqN),有 Si=Ai+Ai+1+Ai+2,具体如下:
- 6=0+4+2。
- 9=4+2+3。
- 6=2+3+1。
- 6=3+1+2。
- 5=1+2+2。
示例输入 2
5
0 1 2 1 0
示例输出 2
No
示例输入 3
1
10
示例输出 3
Yes
0 0 10