#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200005;
int arr[MAXN];
long long ans[MAXN];
int main() {
  int n;
  scanf("%d", &n);
  long long num = 1000000000;
  int loc = -1;
  bool allZero = true;
  for (int i = 0; i < n; i++) {
    scanf("%d", &arr[i]);
    if (arr[i] != 0) {
      allZero = false;
    }
  }
  for (int i = 0; i < n; i++) {
    if (arr[i] < arr[(i + 1) % n]) {
      loc = i;
    }
  }
  if (!allZero && loc == -1) {
    puts("NO");
  } else if (allZero) {
    puts("YES");
    for (int i = 0; i < n; i++) {
      ans[i] = 1;
    }
    for (int i = 0; i < n; i++) {
      if (i > 0) {
        putchar(' ');
      }
      printf("%I64d", ans[i]);
    }
    putchar('\n');
  } else {
    puts("YES");
    ans[(loc + 1) % n] = arr[(loc + 1) % n];
    for (int i = loc, t = 1; t < n; t++, i = (i - 1 + n) % n) {
      int prev = (i - 1 + n) % n;
      ans[i] = arr[i];
      if (arr[prev] >= arr[i] || arr[i] == 0) {
        long long a = arr[i];
        long long c = arr[prev];
        long long b = ans[(i + 1) % n];
        ans[i] = ((c - a) / b + 1) * b + a;
      }
    }
    for (int i = 0; i < n; i++) {
      if (i > 0) {
        putchar(' ');
      }
      printf("%I64d", ans[i]);
    }
    putchar('\n');
  }
  cin.get();
  cin.get();
  return 0;
}
