//Это решение не работает для случая  n = k + m - 4 , если k и m оба меньше 7
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class cut_sm {
	int MAXX = 10000;

	void no() {
		out.println("No");                                            
		out.close();
		System.exit(0);
	}

	void yes() {
		out.println("Yes");
	}

	int countOfPoint;

	private void s(int x1, int y1, int x2, int y2, int cnt) {
		out.println(x1 + " " + y1);
		cnt--;
		countOfPoint++;
		if (cnt == 0)
			return;
		int dx = (x2 - x1) / Math.abs(x2 - x1);
		int dy = (y2 - y1) / Math.abs(y2 - y1);
		x1 += MAXX / 20 * dx + 3;
		y1 += MAXX / 20 * dy + 1;
		out.println(x1 + " " + y1);
		countOfPoint++;
		cnt--;
		if (cnt == 0)
			return;
		int it = 0;
		while (cnt > 1) {
			if (it % 2 == 0) {
				x1 += dx;
			} else {
				y1 += dy;
			}
			out.println(x1 + " " + y1);
			cnt--;
			countOfPoint++;
			it++;
		}
		x2 -= MAXX / 20 * dx + 5;
		y2 -= MAXX / 20 * dy + 7;
		out.println(x2 + " " + y2);
		countOfPoint++;
		cnt++;
	}

	private void solve() {
		int n = in.nextInt();
		assert 2 <= n && n <= 200;
		int m = in.nextInt();
		assert 2 <= m && m <= 200;
		int k = in.nextInt();
		assert 2 <= k && k <= 200;
		if (m > k) {
			int tmp = m;
			m = k;
			k = tmp;
		}
		countOfPoint = 1;
		if (n == m + k) {
			if (m < 3 || k < 3)
				no();
			yes();
			int x = countOfPoint;
			s(-MAXX, 0, -MAXX + 1, 0, 1);
			s(-MAXX + 1, 0, 0, MAXX, m - 2);
			s(0, MAXX, MAXX - 1, 0, 1);
			s(MAXX - 1, 0, MAXX, 0, 1);
			int y = countOfPoint;
			s(MAXX, 0, 0, -MAXX, k - 2);
			s(0, -MAXX, -MAXX, 0, 1);
			out.println(x + " " + y);
		} else if (n == m + k - 1) {
			if (m < 3 || k < 3)
				no();
			yes();
			int x = countOfPoint;
			s(-MAXX, 0, -MAXX + 1, 0, 1);
			s(-MAXX + 1, 0, 0, MAXX, m - 2);
			s(0, MAXX, MAXX, 0, 1);
			int y = countOfPoint;
			s(MAXX, 0, 0, -MAXX, k - 2);
			s(0, -MAXX, -MAXX, 0, 1);
			out.println(x + " " + y);
		} else if (n == m + k - 2) {
			if (m < 3 || k < 3)
				no();
			yes();
			int x = countOfPoint;
			s(-MAXX, 0, 0, MAXX, m - 2);

			s(0, MAXX, MAXX, 0, 1);
			int y = countOfPoint;
			s(MAXX, 0, 0, -MAXX, k - 2);
			s(0, -MAXX, -MAXX, 0, 1);
			out.println(x + " " + y);
		} else if (n == m + k - 3) {
			if (m < 3 || k < 5)
				no();
			yes();
			int x = countOfPoint;
			s(-MAXX, 0, -MAXX + 2, -1, 1);
			s(-MAXX + 2, -1, 0, MAXX, m - 2);
			s(0, MAXX, MAXX, 0, 1);
			int y = countOfPoint;
			s(MAXX, 0, 0, -MAXX, k - 4);
			s(0, -MAXX, -MAXX, 0, 1);
			out.println(x + " " + y);
		} else if (n == m + k - 4) {
			if (m < 3 || k < 7)
				no();
			yes();
			int x = countOfPoint;
			s(-MAXX, 0, -MAXX + 2, -1, 1);
			s(-MAXX + 2, -1, 0, MAXX, m - 2);
			s(0, MAXX, MAXX - 2, -1, 1);
			s(MAXX - 2, -1, MAXX, 0, 1);
			int y = countOfPoint;
			s(MAXX, 0, 0, -MAXX, k - 6);
			s(0, -MAXX, -MAXX, 0, 1);
			out.println(x + " " + y);
		} else {
			no();
		}

	}

	Scanner in;
	PrintWriter out;

	void run() {
		try {
			in = new Scanner(new File("cut.in"));
			out = new PrintWriter("cut.out");
			solve();
			out.close();
		} catch (IOException e) {
			throw new RuntimeException(e);
		}
	}

	public static void main(String[] args) {
		new cut_sm().run();
	}

}
