#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();
}