#include <bits/stdc++.h>
using namespace std;
template <class TH>
void _dbg(const char *sdbg, TH h) {
  cerr << sdbg << "=" << h << "\n";
}
template <class TH, class... TA>
void _dbg(const char *sdbg, TH h, TA... a) {
  while (*sdbg != ',') cerr << *sdbg++;
  cerr << "=" << h << ",";
  _dbg(sdbg + 1, a...);
}
const long long N = 1000 * 1000 + 7;
long long test;
long long n;
long long t[N];
long long res[N];
set<long long> s;
void solve() {
  cin >> n;
  for (long long i = 0; i < (n); ++i) {
    cin >> t[i];
    t[i + n] = t[i];
    s.insert(t[i]);
  }
  if (s.size() == 1) {
    if (*s.begin() == 0) {
      cout << "YES" << '\n';
      for (long long i = 1; i <= (n); ++i) {
        cout << 1 << " ";
      }
    } else {
      cout << "NO";
    }
    return;
  }
  long long x = 0;
  for (long long i = 0; i < (n); ++i) {
    if (t[(i + 1) % n] > t[i]) {
      x = i;
      break;
    }
  }
  res[(x + 1) % n] = t[(x + 1) % n];
  x += n;
  for (long long i = 0; i < (n - 1); ++i) {
    res[x % n] = t[x % n];
    while (res[x % n] <= t[(x - 1) % n]) {
      res[x % n] += res[(x + 1) % n];
    }
    x--;
  }
  for (long long i = 0; i < (n); ++i) {
    if (res[i] % res[(i + 1) % n] != t[i]) {
      cout << "NO";
      return;
    }
  }
  cout << "YES" << '\n';
  for (long long i = 0; i < (n); ++i) {
    cout << res[i] << " ";
  }
  return;
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cout.precision(10);
  cout << fixed;
  test = 1;
  for (long long i = 1; i <= test; i++) {
    solve();
  }
  return 0;
}
