CF1028E Restore Array

Description

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).

Input Format

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 $ ).

Output Format

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).

Explanation/Hint

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