#include using namespace std; // 各操作を先読みしない解法 // 各操作で選ぶxをなるべく小さくする貪欲法 int main() { int N; cin >> N; set S; for (int i = 2; i <= N; ++i) { S.insert(i); } vector x(N); for (int i = 1; i <= N - 1; ++i) { int a; cin >> a; auto j = S.lower_bound(a + 1); if (j == S.end()) { cout << "NO" << endl; return 0; } x[i] = *j - a; S.erase(*j); } cout << "YES" << endl; for (int i = 1; i <= N - 1; ++i) { cout << x[i] << endl; } }