#include <bits/stdc++.h>
using namespace std;
const int MAXN = 150000;
int n;
int a[MAXN];
long long b[MAXN];
void load() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d", a + i);
}
int previ(int x) { return x == 0 ? n - 1 : x - 1; }
bool solve() {
  int maxi = -1, koji;
  for (int i = 0; i < n; i++) {
    if (a[i] > maxi) {
      maxi = a[i];
      koji = i;
    }
  }
  bool bl = true;
  for (int i = 0; i < n; i++)
    if (a[i] != a[0]) bl = false;
  if (bl) {
    for (int i = 0; i < n; i++) b[i] = 7777777;
    return a[0] == 0;
  }
  while (a[previ(koji)] == maxi) koji = previ(koji);
  b[koji] = maxi;
  for (int i = previ(koji); i != koji; i = previ(i)) {
    b[i] = b[(i + 1) % n] + a[i];
    if (i == previ(koji)) b[i] += b[koji];
  }
  return true;
}
int main() {
  load();
  if (solve()) {
    printf("YES\n");
    for (int i = 0; i < n; i++) printf("%lld ", b[i]);
    printf("\n");
  } else {
    printf("NO\n");
  }
  return 0;
}
