#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}) であって、次の条件を満たすものが存在するか否かを判定してください。

  • 任意の ii (1leqileqN+21\\leq i\\leq N+2) に対して 0leqAi0\\leq A_i が成り立つ。
  • 任意の ii (1leqileqN1\\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 の場合には、22 行目にそのような整数列 AA の各要素を、空白で区切って 11 行で出力してください。

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

条件を満たす整数列が複数存在する場合は、どれを出力しても正解となります。


入力例 1

5
6 9 6 6 5

出力例 1

Yes
0 4 2 3 1 2 2

以下のように、任意の ii (1leqileqN1\\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