import java.util.*;
import java.math.*;

class Main {
	static Scanner sc = new Scanner(System.in);

	void solve() {
		try {
			long a = sc.nextInt(), b = sc.nextInt(), c = sc.nextInt(), d = sc.nextInt();
			long r1 = Math.max(a * c, a * d);
			long r2 = Math.max(b * c, b * d);
			System.out.println(Math.max(r1, r2));
		} catch (Exception e) {
			return;
		}
	}

	public static void main(String[] args) {
		Main ob = new Main();
		ob.solve();
	}
} import java.util.*; util.* java import java.math.*; math.* java class Main {
	static Scanner sc = new Scanner(System.in);

	void solve() {
		try {
			long a = sc.nextInt(), b = sc.nextInt(), c = sc.nextInt(), d = sc.nextInt();
			long r1 = Math.max(a * c, a * d);
			long r2 = Math.max(b * c, b * d);
			System.out.println(Math.max(r1, r2));
		} catch (Exception e) {
			return;
		}
	}

	public static void main(String[] args) {
		Main ob = new Main();
		ob.solve();
	}
} Main static Scanner sc = new Scanner(System.in); sc new Scanner(System.in) void solve() {
		try {
			long a = sc.nextInt(), b = sc.nextInt(), c = sc.nextInt(), d = sc.nextInt();
			long r1 = Math.max(a * c, a * d);
			long r2 = Math.max(b * c, b * d);
			System.out.println(Math.max(r1, r2));
		} catch (Exception e) {
			return;
		}
	} solve {
		try {
			long a = sc.nextInt(), b = sc.nextInt(), c = sc.nextInt(), d = sc.nextInt();
			long r1 = Math.max(a * c, a * d);
			long r2 = Math.max(b * c, b * d);
			System.out.println(Math.max(r1, r2));
		} catch (Exception e) {
			return;
		}
	} try {
			long a = sc.nextInt(), b = sc.nextInt(), c = sc.nextInt(), d = sc.nextInt();
			long r1 = Math.max(a * c, a * d);
			long r2 = Math.max(b * c, b * d);
			System.out.println(Math.max(r1, r2));
		} catch (Exception e) {
			return;
		} catch (Exception e) {
			return;
		} Exception e {
			return;
		} return; {
			long a = sc.nextInt(), b = sc.nextInt(), c = sc.nextInt(), d = sc.nextInt();
			long r1 = Math.max(a * c, a * d);
			long r2 = Math.max(b * c, b * d);
			System.out.println(Math.max(r1, r2));
		} long a = sc.nextInt() a sc.nextInt() sc.nextInt sc b = sc.nextInt() b sc.nextInt() sc.nextInt sc c = sc.nextInt() c sc.nextInt() sc.nextInt sc d = sc.nextInt(); d sc.nextInt() sc.nextInt sc long r1 = Math.max(a * c, a * d); r1 Math.max(a * c, a * d) Math.max Math a * c a c a * d a d long r2 = Math.max(b * c, b * d); r2 Math.max(b * c, b * d) Math.max Math b * c b c b * d b d System.out.println(Math.max(r1, r2)) System.out.println System.out System System.out Math.max(r1, r2) Math.max Math r1 r2 public static void main(String[] args) {
		Main ob = new Main();
		ob.solve();
	} main {
		Main ob = new Main();
		ob.solve();
	} Main ob = new Main(); ob new Main() ob.solve() ob.solve ob String[] args args
import java.util.*;
import java.math.*;

class Main {
	static Scanner sc = new Scanner(System.in);

	void solve() {
		try {
			long a = sc.nextInt(), b = sc.nextInt(), c = sc.nextInt(), d = sc.nextInt();
			long r1 = Math.max(a * c, a * d);
			long r2 = Math.max(b * c, b * d);
			System.out.println(Math.max(r1, r2));
		} catch (Exception e) {
			return;
		}
	}

	public static void main(String[] args) {
		Main ob = new Main();
		ob.solve();
	}
}