Restore Array

题意翻译

有$2$个环形数列$A,B$ (即$A_i=A_{i \mod n},\ B_i=B_{i \mod n}$),其中$B_i=A_i \mod A_{i+1}$。 现在给定数列$B$,如果存在一个满足条件的数列$A$,请输出`YES`和数列$A$,否则输出一行`NO`。 输出的数列$A$应满足$1\le A_i \le 10^{18}$

题目描述

While discussing a proper problem A for a Codeforces Round, Kostya created a cyclic array of positive integers $ a_1, a_2, \ldots, a_n $ . Since the talk was long and not promising, Kostya created a new cyclic array $ b_1, b_2, \ldots, b_{n} $ so that $ b_i = (a_i \mod a_{i + 1}) $ , where we take $ a_{n+1} = a_1 $ . Here $ mod $ is the [modulo operation](https://en.wikipedia.org/wiki/Modulo_operation). When the talk became interesting, Kostya completely forgot how array $ a $ had looked like. Suddenly, he thought that restoring array $ a $ from array $ b $ would be an interesting problem (unfortunately, not A).

输入输出格式

输入格式


The first line contains a single integer $ n $ ( $ 2 \le n \le 140582 $ ) — the length of the array $ a $ . The second line contains $ n $ integers $ b_1, b_2, \ldots, b_{n} $ ( $ 0 \le b_i \le 187126 $ ).

输出格式


If it is possible to restore some array $ a $ of length $ n $ so that $ b_i = a_i \mod a_{(i \mod n) + 1} $ holds for all $ i = 1, 2, \ldots, n $ , print «YES» in the first line and the integers $ a_1, a_2, \ldots, a_n $ in the second line. All $ a_i $ should satisfy $ 1 \le a_i \le 10^{18} $ . We can show that if an answer exists, then an answer with such constraint exists as well. It it impossible to restore any valid $ a $ , print «NO» in one line. You can print each letter in any case (upper or lower).

输入输出样例

输入样例 #1

4
1 3 1 0

输出样例 #1

YES
1 3 5 2

输入样例 #2

2
4 4

输出样例 #2

NO

说明

In the first example: - $ 1 \mod 3 = 1 $ - $ 3 \mod 5 = 3 $ - $ 5 \mod 2 = 1 $ - $ 2 \mod 1 = 0 $