import sys def solve(): data = sys.stdin.read().strip().split() if not data: return it = iter(data) N = int(next(it)); P = int(next(it)); Q = int(next(it)) X = [0]*N A = [0]*N B = [0]*N for i in range(N): X[i] = int(next(it)); A[i] = int(next(it)); B[i] = int(next(it)) L = [0]*N R = [0]*N sumL = 0 sumR = 0 S = 0 for i in range(N): S += X[i] Li = max(0, X[i] - B[i]) Ri = min(A[i], X[i]) L[i] = Li R[i] = Ri sumL += Li sumR += Ri # feasible total a sum must be in intersection of [sumL,sumR] and [S-Q, P] need_low = S - Q # >= this to ensure sum b_i <= Q need_high = P # <= this to ensure sum a_i <= P lo = max(sumL, need_low) hi = min(sumR, need_high) if lo > hi: print("No") return T = lo # choose any value in [lo,hi]; lo is fine delta = T - sumL # non-negative a = L[:] # start with minimums for i in range(N): if delta <= 0: break can = R[i] - L[i] give = can if can <= delta else delta a[i] += give delta -= give # final sanity (not necessary but safe) sum_a = sum(a) sum_b = S - sum_a if sum_a <= P and sum_b <= Q: print("Yes") out = [] for i in range(N): out.append(f"{a[i]} {X[i]-a[i]}") print("\n".join(out)) else: print("No") if __name__ == "__main__": solve()