配点 : 500 点
問題文
項数 N の整数列 S=(S1,…,SN) が与えられます。
項数 N+2 の整数列 A=(A1,…,AN+2) であって、次の条件を満たすものが存在するか否かを判定してください。
- 任意の i (1≤i≤N+2) に対して 0≤Ai が成り立つ。
- 任意の i (1≤i≤N) に対して、Si=Ai+Ai+1+Ai+2 が成り立つ。
存在する場合には、そのようなものをひとつ出力してください。
制約
- 1≤N≤3×105
- 0≤Si≤109
入力
入力は以下の形式で標準入力から与えられます。
N
S1 … SN
出力
問題の条件を満たす整数列 A が存在するならば Yes
を、そうでなければ No
を出力してください。
Yes
の場合には、2 行目にそのような整数列 A の各要素を、空白で区切って 1 行で出力してください。
A1 … AN+2
条件を満たす整数列が複数存在する場合は、どれを出力しても正解となります。
5
6 9 6 6 5
Yes
0 4 2 3 1 2 2
以下のように、任意の i (1≤i≤N) に対して 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。
5
0 1 2 1 0
No
1
10
Yes
0 0 10