#arc135b. [arc135_b]Sum of Three Terms

[arc135_b]Sum of Three Terms

题目描述

给定一个 NN 个整数的序列 S=(S1,ldots,SN)S = (S_1, \\ldots, S_N)。判断是否存在一个包含 N+2N+2 个整数的序列 A=(A1,ldots,AN+2)A = (A_1, \\ldots, A_{N+2}),满足以下条件。

  • 对于每个 ii1leqileqN+21\\leq i\\leq N+2),有 0leqAi0\\leq A_i
  • 对于每个 ii1leqileqN1\\leq i\\leq N),有 Si=Ai+Ai+1+Ai+2S_i = A_{i} + A_{i+1} + A_{i+2}

如果存在符合条件的序列,则输出一个这样的序列。

约束条件

  • 1leqNleq3times1051\\leq N\\leq 3\\times 10^5
  • 0leqSileq1090\\leq S_i\\leq 10^9

输入

从标准输入中按以下格式给出输入:

NN S1S_1 ldots\\ldots SNS_N

输出

如果存在满足条件的序列 AA,则输出 Yes;否则,输出 No。当输出为 Yes 时,在一行中输出序列 AA 的元素,以空格分隔。

A1A_1 ldots\\ldots AN+2A_{N+2}

如果有多个满足条件的序列,可以输出任意一个。


示例输入 1

5
6 9 6 6 5

示例输出 1

Yes
0 4 2 3 1 2 2

我们可以验证对于每个 ii1leqileqN1\\leq i\\leq N),有 Si=Ai+Ai+1+Ai+2S_i = A_i + A_{i+1} + A_{i+2},具体如下:

  • 6=0+4+26 = 0 + 4 + 2
  • 9=4+2+39 = 4 + 2 + 3
  • 6=2+3+16 = 2 + 3 + 1
  • 6=3+1+26 = 3 + 1 + 2
  • 5=1+2+25 = 1 + 2 + 2

示例输入 2

5
0 1 2 1 0

示例输出 2

No

示例输入 3

1
10

示例输出 3

Yes
0 0 10