#include <bits/stdc++.h>
using namespace std;
const int nmax = 140582;
int b[1 + nmax];
long long v[1 + nmax];
int main() {
  int n;
  cin >> n;
  bool allZero = true;
  bool allEqual = true;
  int maxim = 0;
  for (int i = 1; i <= n; i++) {
    cin >> b[i];
    if (maxim < b[i]) {
      maxim = b[i];
    }
    if (0 < b[i]) {
      allZero = false;
    }
    if (1 < i && b[i - 1] != b[i]) {
      allEqual = false;
    }
  }
  if (allZero == true) {
    cout << "YES" << '\n';
    for (int i = 1; i <= n; i++) {
      cout << 1 << '\n';
    }
  } else if (allEqual == true) {
    cout << "NO" << '\n';
  } else {
    int poz = 0;
    b[n + 1] = b[1];
    for (int i = 2; i <= n + 1; i++) {
      if (b[i] == maxim && b[i - 1] < maxim) {
        poz = i;
        break;
      }
    }
    if (poz == 0) {
      cout << "Wrong";
    } else {
      v[poz - 1] = b[poz - 1] + 2 * b[poz];
      if (poz == n + 1) {
        poz = 1;
      }
      v[poz] = b[poz];
      int j = poz - 1;
      while (j != poz) {
        if (j == 0) {
          j = n;
        }
        if (v[j] == 0) {
          v[j] = v[j + 1] + b[j];
          if (j + 1 == n + 1) {
            v[j] += v[1];
          }
        }
        j--;
        if (j == 0) {
          j = n;
        }
      }
      cout << "YES" << '\n' << v[1];
      for (int i = 2; i <= n; i++) {
        cout << " " << v[i];
      }
    }
  }
  return 0;
}
