// Задача "Распил"
// 10-ая Всероссийская командная олимпиада школьников по программированию
// Автор задачи:  Елена Андреева
// Автор решения: Владимир Ульянцев, ulyantsev@rain.ifmo.ru

uses
	sysutils, math;
type
	int = longint;
const
	MAXN = 200;
var
	n, m, k, i, cnt, d : int;

begin
	reset(input, 'cut.in');
	rewrite(output, 'cut.out');
	
	read(n, m, k);
	assert((3 <= n) and (n <= MAXN));
	assert((3 <= m) and (m <= MAXN));
	assert((3 <= k) and (k <= MAXN));

	if (k > m) then begin
		i := k;
		k := m;
		m := i;
	end;

	d := m + k - n;

	if ((d < 0) or (d > 4) or ((d >= 3) and (m < d + 2))) then begin
		writeln('No');
	end else begin
		writeln('Yes');

		writeln('0 0');
		if (d <> 3) then
			writeln('2 2');

		if (d >= 3) then
			writeln('1 3');

		writeln('4 3');

		for i := 1 to k - 3 do
			writeln(4 + i, ' ', 3 + i div 2 + i mod 2);

		if ((d <> 4) and (d <> 2)) then
			writeln('500 500');

		if (d = 0) then
			writeln('501 501');

		writeln('0 500');

		if (d = 2) then
			cnt := 3
		else
			cnt := max(d + 2, 3);
		
		for i := 1 to m - cnt do
			writeln(-i, ' ', 500 - i div 2 - i mod 2);

		// вывод номеров точек, через которые проводится распил
		if (d = 3) then
			writeln('1 ', k + 1)
		else
			writeln('1 2');
	end;

end.
