#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int n, i, s = -1, b[N];
long long a[N];
int main() {
  scanf("%d", &n);
  for (i = 0; i < n; i++) scanf("%d", &b[i]);
  for (i = 0; i < n; i++) {
    if (b[i] > b[(i + n - 1) % n]) {
      s = i;
      break;
    }
  }
  if (s == -1) {
    if (b[0] == 0) {
      puts("YES");
      for (i = 1; i <= n; i++) printf("1%c", i == n ? '\n' : ' ');
    } else
      puts("NO");
    return 0;
  }
  a[s] = b[s];
  for (i = s + n - 1; i >= s + 1; i--) {
    int cur = i % n, nxt = (i + 1) % n, pre = (i + n - 1) % n;
    long long q = (b[pre] - b[cur]) / a[nxt] + 1;
    a[cur] = q * a[nxt] + b[cur];
  }
  puts("YES");
  for (i = 0; i < n; i++) printf("%lld%c", a[i], i == n - 1 ? '\n' : ' ');
  return 0;
}
