#include <bits/stdc++.h>
using namespace std;
using namespace chrono;
const int infinity = (int)1e9 + 42;
const int64_t llInfinity = (int64_t)1e18 + 256;
const int module = (int)1e9 + 7;
const long double eps = 1e-8;
mt19937_64 randGen(system_clock().now().time_since_epoch().count());
inline void raiseError(string errorCode) {
  cerr << "Error : " << errorCode << endl;
  exit(42);
}
signed main() {
  ios_base::sync_with_stdio(false);
  int64_t n;
  cin >> n;
  vector<int64_t> v(n);
  int64_t best = 0;
  int64_t bval = 0;
  int64_t sum = 0;
  for (int64_t i = 0; i < n; i++) {
    cin >> v[i];
    best = max(best, v[i]);
    if (v[i] == best) {
      bval = i;
    }
    sum += v[i];
  }
  if (best == 0) {
    cout << "YES\n";
    for (int64_t i = 0; i < n; i++) {
      cout << 1 << " ";
    }
    cout << endl;
    return 0;
  }
  if ((int64_t)best * n == sum) {
    cout << "NO\n";
    return 0;
  }
  while (v[bval] == best) {
    bval += n - 1;
    bval %= n;
  }
  bval++;
  bval %= n;
  vector<int64_t> a(n);
  a[bval] = v[bval];
  for (int64_t i = 1; i < n; i++) {
    int64_t nval = (bval + n - 1) % n;
    if (i == 1) {
      a[nval] = 2 * a[bval] + v[nval];
    } else {
      a[nval] = 1 * a[bval] + v[nval];
    }
    bval = nval;
  }
  cout << "YES\n";
  for (int64_t i = 0; i < n; i++) {
    cout << a[i] << " ";
  }
  cout << endl;
  return 0;
}
