#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  scanf("%d", &n);
  int b[n];
  for (int i = 0; i < n; i++) scanf("%d", &b[i]);
  int maxe = 0;
  for (int i = 0; i < n; i++) maxe = max(maxe, b[i]);
  bool eq = true;
  for (int i = 0; i < n; i++) eq &= (maxe == b[i]);
  if (eq) {
    if (maxe == 0) {
      cout << "YES" << endl;
      for (int i = 0; i < n; i++) cout << 1 << " ";
    } else
      cout << "NO" << endl;
    return 0;
  }
  long long int ans[n];
  if (maxe == b[0] && maxe == b[n - 1]) {
    int st = n - 1;
    while (b[st] == maxe) st--;
    ans[st + 1] = maxe;
    for (int i = 0; i < st + 1; i++) {
      ans[st - i] = ans[st + 1 - i] + b[st - i];
      if (i == 0 && b[st] == 0) ans[st - i] = ans[st + 1 - i] * 2;
    }
    if (st != n - 2) ans[n - 1] = ans[0] + b[n - 1];
    if (b[n - 1] == 0) ans[n - 1] = ans[0] * 2;
    for (int i = n - 2; i > st + 1; i--) ans[i] = ans[i + 1] + b[i];
  } else {
    int st = 1000000001;
    for (int i = 0; i < n; i++)
      if (b[i] == maxe) st = min(st, i);
    ans[st] = maxe;
    for (int i = 0; i < st; i++) {
      ans[st - 1 - i] = ans[st - i] + b[st - 1 - i];
      if (i == 0 && b[st - 1 - i] == 0) ans[st - 1 - i] = ans[st - i] * 2;
    }
    if (st != n - 1) ans[n - 1] = ans[0] + b[n - 1];
    if (b[n - 1] == 0) ans[n - 1] = ans[0] * 2;
    for (int i = n - 2; i > st; i--) ans[i] = ans[i + 1] + b[i];
  }
  cout << "YES" << endl;
  for (int i = 0; i < n; i++) cout << ans[i] << " ";
  return 0;
}
