問題文
項数 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
の場合には、2 行目にそのような整数列 A の各要素を、空白で区切って 1 行で出力してください。
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