import java.util.Scanner;

public class Main {
	// 2-100
	public static void main(String args[]) {
		Scanner in = new Scanner(System.in);
		long a = in.nextLong();
		long b = in.nextLong();
		long c = in.nextLong();
		long d = in.nextLong();
		long firstA = a*c;
		long firstB = a*d;
		long SecondA = b*c;
		long SecondB = b*d;
		System.out.println(Math.max(Math.max(firstA, firstB),Math.max(SecondA, SecondB)));
	}

} import java.util.Scanner; Scanner java.util public class Main {
	// 2-100
	public static void main(String args[]) {
		Scanner in = new Scanner(System.in);
		long a = in.nextLong();
		long b = in.nextLong();
		long c = in.nextLong();
		long d = in.nextLong();
		long firstA = a*c;
		long firstB = a*d;
		long SecondA = b*c;
		long SecondB = b*d;
		System.out.println(Math.max(Math.max(firstA, firstB),Math.max(SecondA, SecondB)));
	}

} Main // 2-100
	public static void main(String args[]) {
		Scanner in = new Scanner(System.in);
		long a = in.nextLong();
		long b = in.nextLong();
		long c = in.nextLong();
		long d = in.nextLong();
		long firstA = a*c;
		long firstB = a*d;
		long SecondA = b*c;
		long SecondB = b*d;
		System.out.println(Math.max(Math.max(firstA, firstB),Math.max(SecondA, SecondB)));
	} main {
		Scanner in = new Scanner(System.in);
		long a = in.nextLong();
		long b = in.nextLong();
		long c = in.nextLong();
		long d = in.nextLong();
		long firstA = a*c;
		long firstB = a*d;
		long SecondA = b*c;
		long SecondB = b*d;
		System.out.println(Math.max(Math.max(firstA, firstB),Math.max(SecondA, SecondB)));
	} Scanner in = new Scanner(System.in); in new Scanner(System.in) long a = in.nextLong(); a in.nextLong() in.nextLong in long b = in.nextLong(); b in.nextLong() in.nextLong in long c = in.nextLong(); c in.nextLong() in.nextLong in long d = in.nextLong(); d in.nextLong() in.nextLong in long firstA = a*c; firstA a*c a c long firstB = a*d; firstB a*d a d long SecondA = b*c; SecondA b*c b c long SecondB = b*d; SecondB b*d b d System.out.println(Math.max(Math.max(firstA, firstB),Math.max(SecondA, SecondB))) System.out.println System.out System System.out Math.max(Math.max(firstA, firstB),Math.max(SecondA, SecondB)) Math.max Math Math.max(firstA, firstB) Math.max Math firstA firstB Math.max(SecondA, SecondB) Math.max Math SecondA SecondB String args[] args public class Main {
	// 2-100
	public static void main(String args[]) {
		Scanner in = new Scanner(System.in);
		long a = in.nextLong();
		long b = in.nextLong();
		long c = in.nextLong();
		long d = in.nextLong();
		long firstA = a*c;
		long firstB = a*d;
		long SecondA = b*c;
		long SecondB = b*d;
		System.out.println(Math.max(Math.max(firstA, firstB),Math.max(SecondA, SecondB)));
	}

} public class Main {
	// 2-100
	public static void main(String args[]) {
		Scanner in = new Scanner(System.in);
		long a = in.nextLong();
		long b = in.nextLong();
		long c = in.nextLong();
		long d = in.nextLong();
		long firstA = a*c;
		long firstB = a*d;
		long SecondA = b*c;
		long SecondB = b*d;
		System.out.println(Math.max(Math.max(firstA, firstB),Math.max(SecondA, SecondB)));
	}

} Main
import java.util.Scanner;

public class Main {
	// 2-100
	public static void main(String args[]) {
		Scanner in = new Scanner(System.in);
		long a = in.nextLong();
		long b = in.nextLong();
		long c = in.nextLong();
		long d = in.nextLong();
		long firstA = a*c;
		long firstB = a*d;
		long SecondA = b*c;
		long SecondB = b*d;
		System.out.println(Math.max(Math.max(firstA, firstB),Math.max(SecondA, SecondB)));
	}

}