#include <bits/stdc++.h> using namespace std; #define all(x) ::begin(x), ::end(x) #define tsolve int t; cin >> t; while (t--) solve #define sz(x) (int)::size(x) using ll = long long; using ld = long double; ll n, a, b; vector<ll> d; void solve() { cin >> n; cin >> a >> b; ll s = 0; d.resize(n - 1); for (ll& x : d) { cin >> x; s += x; } s -= a + b; if (s < 0 || s % 2 != 0) { cout << "NO\n"; return; } s /= 2; if (s == 0) { cout << "YES\n"; ll t = 0; cout << 0 << ' ' << 0 << '\n'; for (ll x : d) { t += x; if (t < a) cout << t << ' ' << 0 << '\n'; else cout << a << ' ' << (t - a) << '\n'; } return; } ll p = 0; for (ll y : d) { p += y; if (s <= p && p <= a + s) { // down cout << "YES\n"; ll t = 0; cout << 0 << ' ' << 0 << '\n'; for (ll x : d) { t += x; if (t < s) cout << 0 << ' ' << -t << '\n'; else if (t <= a + s) cout << (t - s) << ' ' << -s << '\n'; else cout << a << ' ' << (t - (a + 2 * s)) << '\n'; } return; } if (a + s <= p && p <= a + b + s) { // right cout << "YES\n"; ll t = 0; cout << 0 << ' ' << 0 << '\n'; for (ll x : d) { t += x; if (t < a + s) cout << t << ' ' << 0 << '\n'; else if (t <= a + b + s) cout << (a + s) << ' ' << (t - (a + s)) << '\n'; else cout << (a + s - (t - (a + b + s))) << ' ' << b << '\n'; } return; } if (b + s <= p && p <= a + b + s) { // up cout << "YES\n"; ll t = 0; cout << 0 << ' ' << 0 << '\n'; for (ll x : d) { t += x; if (t < b + s) cout << 0 << ' ' << t << '\n'; else if (t <= a + b + s) cout << (t - (b + s)) << ' ' << (b + s) << '\n'; else cout << a << ' ' << (b + s - (t - (a + b + s))) << '\n'; } return; } if (s <= p && p <= b + s) { // left cout << "YES\n"; ll t = 0; cout << 0 << ' ' << 0 << '\n'; for (ll x : d) { t += x; if (t < s) cout << -t << ' ' << 0 << '\n'; else if (t <= a + s) cout << -s << ' ' << (t - s) << '\n'; else cout << (t - (b + 2 * s)) << ' ' << b << '\n'; } return; } } cout << "NO\n"; } int main() { cout.tie(0)->sync_with_stdio(false); cout << setprecision(16); solve(); }