import java.io.*;
import java.util.*;

public class knight_md {
	private static final String NO = "NO";
	private static final String YES = "YES";

	public void run() {
		int a = in.nextInt();
		int b = in.nextInt();
		int c = in.nextInt();
		int d = in.nextInt();
		if (c == 1 && d == 1) {
			out.println(YES);
			return;
		}
		if (c < a || d < b) {
			out.println(NO);
			out.println(3);
			out.println("-1 0");
			out.println("0 -1");
			out.println((a - 1) + " " + (b - 1));
			return;
		}
		if (a == 1 && c > 1) {
			out.println(NO);
			out.println(2);
			out.println("0 1");
			out.println("0 -1");
			return;
		}
		if (b == 1 && d > 1) {
			out.println(NO);
			out.println(2);
			out.println("1 0");
			out.println("-1 0");
			return;
		}
		out.println(YES);
	}

	private static String fileName = knight_md.class.getSimpleName().replaceFirst("_.*", "").toLowerCase();
	private static String inputFileName = fileName + ".in";
	private static String outputFileName = fileName + ".out";
	private static Scanner in;
	private static PrintWriter out;
	
	public static void main(String[] args) throws IOException {
		Locale.setDefault(Locale.US);
		in = new Scanner(new File(inputFileName));
		out = new PrintWriter(outputFileName);
		new knight_md().run();
		in.close();
		out.close();
	}
}
