#nullable enable #region var _input = Array.Empty(); var _iter = 0; string String() { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Trim().Split(' '), 0); return _input[_iter++]; } T I() where T : IParsable => T.Parse(String(), null); #endregion var n = I(); var p = I(); var q = I(); var az = new long[n]; var bz = new long[n]; var sz = new long[n]; var f = true; for (var i = 0; i < n; i++) { var x = I(); var a = I(); var b = I(); if (x > a + b) f = false; var min = Math.Min(x, a); az[i] = min; p -= min; x -= min; if (x > 0) { bz[i] = x; q -= x; } sz[i] = b - x; } for (var i = 0; i < n; i++) { if (p >= 0) break; var s = Math.Min(sz[i], az[i]); s = Math.Min(s, -p); az[i] -= s; bz[i] += s; p += s; q -= s; } if (!f || p < 0 || q < 0) { Console.WriteLine("No"); return; } Console.WriteLine("Yes"); var sns = new string[n]; for (var i = 0; i < n; i++) sns[i] = az[i] + " " + bz[i]; Console.WriteLine(string.Join(Environment.NewLine, sns));