#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 7;
const int inf = 0x3f3f3f3f;
const long long INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + 7;
const double eps = 1e-8;
const double PI = acos(-1);
int n, who = -1, id[N];
long long a[N], b[N];
bool flag;
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%lld", &b[i]);
    flag |= b[i];
  }
  for (int i = 0; i < n; i++) {
    if (b[(i - 1 + n) % n] < b[i]) who = i;
  }
  if (!flag) {
    puts("YES");
    for (int i = 0; i < n; i++) printf("1 ");
    puts("");
  } else if (n == 2) {
    if (a[0] == a[1])
      puts("NO");
    else {
      puts("YES");
      if (a[0] > a[1])
        printf("%lld %lld\n", a[0], a[0] + a[1]);
      else
        printf("%lld %lld\n", a[0] + a[1], a[1]);
    }
  } else {
    if (who == -1) return puts("NO"), 0;
    int now = 0, cur = (who + 1) % n;
    for (int i = 1; i <= n; i++) {
      id[now++] = cur;
      cur = (cur + 1) % n;
    }
    a[id[n - 1]] = b[id[n - 1]];
    for (int i = n - 2; i >= 0; i--) {
      long long low = b[id[(i - 1 + n) % n]] + 1;
      long long mo = a[id[i + 1]];
      a[id[i]] = low + (((b[id[i]] % mo) - (low % mo)) % mo + mo) % mo;
    }
    puts("YES");
    for (int i = 0; i < n; i++) printf("%lld ", a[i]);
    puts("");
  }
  return 0;
}
