#include #include using namespace std; using namespace atcoder; typedef long long ll; #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) static const double pi = 3.141592653589793; const ll INF = 1LL << 60; const ll mod = 1000000007; const ll imod = 998244353; using mint = modint998244353; vector dx = {1, 0, -1, 0}, dy = {0, 1, 0, -1}; ll P(ll x, ll n) { ll ret = 1; while (n > 0) { if (n & 1) ret *= x; x *= x; n >>= 1; } return ret; } void seek(bool f){ cout << (f ? "Yes" : "No") << endl; } int main(){ ll N, P, Q; cin >> N >> P >> Q; vector X(N), A(N), B(N); ll SX = 0, SA = 0, SB = 0; rep(i, N){ cin >> X[i] >> A[i] >> B[i]; SX += X[i]; SA += A[i]; SB += B[i]; } if(SX != P + Q or SA < P or SB < Q){ cout << "No" << endl; } else{ cout << "Yes" << endl; vector A1(N), B1(N); rep(i, N){ A1[i] = A[i]; B1[i] = min(X[i] - A[i], B[i]); } rep(i, N){ ll d = B[i] - B1[i]; if(SA - d >= P){ SA -= d; B1[i] = B[i]; A1[i] = min(X[i] - B[i], A[i]); } else{ B1[i] += SA - P; A1[i] -= SA - P; break; } } rep(i, N){ cout << A1[i] << " " << B1[i] << endl; } } }