#include using namespace std; typedef pair pii; typedef long long ll; const int N = 2000086, MOD = 998244353, INF = 0x3f3f3f3f; int n, m, w[N]; ll ca, cb; int a[N], b[N], aa[N], ab[N]; int main() { cin >> n >> ca >> cb; ll ta = ca, tb = cb; ll sum = 0; for (int i = 1; i < n + 1; i++) scanf("%d%d%d", w + i, a + i, b + i), sum += w[i]; queue q; for (int i = 1; i < n + 1; i++) { if (ca + cb < w[i] || a[i] + b[i] < w[i]) { puts("No"); return 0; } while (min(ca, (ll)a[i]) + min(cb, (ll)b[i]) < w[i]) { if (!q.size()) { puts("No"); return 0; } auto u = q.front(); q.pop(); int c = min({ w[i] - (int)(min(ca, (ll)a[i]) + min(cb, (ll)b[i])), aa[u], b[u] - ab[u] }); aa[u] -= c, ab[u] += c; ca += c, cb -= c; if (min(aa[u], b[u] - ab[u])) q.push(u); } int t = min({ca, (ll)a[i], (ll)w[i]}); aa[i] = t, ab[i] = w[i] - t; assert(aa[i] <= a[i] && ab[i] <= b[i]); ca -= t, cb -= w[i] - t; if (min(aa[i], b[i] - ab[i])) q.push(i); } puts("Yes"); for (int i = 1; i < n + 1; i++) { printf("%d %d\n", aa[i], ab[i]); ta -= aa[i], tb -= ab[i]; } assert(ta >= 0 && tb >= 0); return 0; }