#include <bits/stdc++.h>
using namespace std;
const long long INF = 0x3f3f3f3f;
const long long MOD = 1e9 + 7;
const long long MAX = 150010;
long long n, a[MAX], b[MAX], b_idx;
void print(bool u) {
  if (u) {
    printf("YES\n");
    for (long long i = 0; i < n; i++) printf("%lld ", a[i]);
    printf("\n");
    return;
  }
  printf("NO\n");
}
int main() {
  scanf("%lld", &n);
  for (long long i = 0; i < n; i++) scanf("%lld", &b[i]);
  for (long long i = 0; i < n; i++)
    if (b[b_idx] < b[i]) b_idx = i;
  if (b[b_idx] == 0) {
    for (long long i = 0; i < n; i++) a[i] = 1;
    print(true);
    return 0;
  }
  for (long long i = 0, t = 0; i < n; i++)
    if (b[b_idx] == b[i]) {
      t++;
      if (t == n) {
        print(false);
        return 0;
      }
      if (b[(i - 1 + n) % n] != b[i]) b_idx = i;
    }
  a[b_idx] = b[b_idx];
  for (long long i = b_idx, j = 0; j < n - 1; i = (i - 1 + n) % n, j++) {
    long long pi = (i - 1 + n) % n;
    if (i == b_idx)
      a[pi] = a[i] * 2 + b[pi];
    else
      a[pi] = a[i] + b[pi];
  }
  print(true);
}
