import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Scanner scan = new Scanner(System.in);
		long a = scan.nextLong();
		long b = scan.nextLong();
		long c = scan.nextLong();
		long d = scan.nextLong();

		//（a,c）
		long ac = 0;
		ac = a * c;

		//（b,d）
		long bd = 0;
		bd = b * d;

		//（a,d）
		long ad = 0;
		ad = a * d;

		//（b,c）
		long bc = 0;
		bc = b * c;

		long values[] = {ac,bd,ad,bc};
		long max = values[0];

		for(int i = 0; i < values.length; i++) {
			max = Math.max(max, values[i]);
		}


		System.out.println(max);

	}

} import java.util.Scanner; Scanner java.util public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Scanner scan = new Scanner(System.in);
		long a = scan.nextLong();
		long b = scan.nextLong();
		long c = scan.nextLong();
		long d = scan.nextLong();

		//（a,c）
		long ac = 0;
		ac = a * c;

		//（b,d）
		long bd = 0;
		bd = b * d;

		//（a,d）
		long ad = 0;
		ad = a * d;

		//（b,c）
		long bc = 0;
		bc = b * c;

		long values[] = {ac,bd,ad,bc};
		long max = values[0];

		for(int i = 0; i < values.length; i++) {
			max = Math.max(max, values[i]);
		}


		System.out.println(max);

	}

} Main public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Scanner scan = new Scanner(System.in);
		long a = scan.nextLong();
		long b = scan.nextLong();
		long c = scan.nextLong();
		long d = scan.nextLong();

		//（a,c）
		long ac = 0;
		ac = a * c;

		//（b,d）
		long bd = 0;
		bd = b * d;

		//（a,d）
		long ad = 0;
		ad = a * d;

		//（b,c）
		long bc = 0;
		bc = b * c;

		long values[] = {ac,bd,ad,bc};
		long max = values[0];

		for(int i = 0; i < values.length; i++) {
			max = Math.max(max, values[i]);
		}


		System.out.println(max);

	} main {
		// TODO 自動生成されたメソッド・スタブ
		Scanner scan = new Scanner(System.in);
		long a = scan.nextLong();
		long b = scan.nextLong();
		long c = scan.nextLong();
		long d = scan.nextLong();

		//（a,c）
		long ac = 0;
		ac = a * c;

		//（b,d）
		long bd = 0;
		bd = b * d;

		//（a,d）
		long ad = 0;
		ad = a * d;

		//（b,c）
		long bc = 0;
		bc = b * c;

		long values[] = {ac,bd,ad,bc};
		long max = values[0];

		for(int i = 0; i < values.length; i++) {
			max = Math.max(max, values[i]);
		}


		System.out.println(max);

	} Scanner scan = new Scanner(System.in); scan new Scanner(System.in) long a = scan.nextLong(); a scan.nextLong() scan.nextLong scan long b = scan.nextLong(); b scan.nextLong() scan.nextLong scan long c = scan.nextLong(); c scan.nextLong() scan.nextLong scan long d = scan.nextLong(); d scan.nextLong() scan.nextLong scan long ac = 0; ac 0 ac = a * c ac a * c a c long bd = 0; bd 0 bd = b * d bd b * d b d long ad = 0; ad 0 ad = a * d ad a * d a d long bc = 0; bc 0 bc = b * c bc b * c b c long values[] = {ac,bd,ad,bc}; values {ac,bd,ad,bc} ac bd ad bc long max = values[0]; max values[0] values 0 for(int i = 0; i < values.length; i++) {
			max = Math.max(max, values[i]);
		} int i = 0; int i = 0; i 0 i < values.length i values.length values values.length i++ i++ i {
			max = Math.max(max, values[i]);
		} {
			max = Math.max(max, values[i]);
		} max = Math.max(max, values[i]) max Math.max(max, values[i]) Math.max Math max values[i] values i System.out.println(max) System.out.println System.out System System.out max String[] args args public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Scanner scan = new Scanner(System.in);
		long a = scan.nextLong();
		long b = scan.nextLong();
		long c = scan.nextLong();
		long d = scan.nextLong();

		//（a,c）
		long ac = 0;
		ac = a * c;

		//（b,d）
		long bd = 0;
		bd = b * d;

		//（a,d）
		long ad = 0;
		ad = a * d;

		//（b,c）
		long bc = 0;
		bc = b * c;

		long values[] = {ac,bd,ad,bc};
		long max = values[0];

		for(int i = 0; i < values.length; i++) {
			max = Math.max(max, values[i]);
		}


		System.out.println(max);

	}

} public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Scanner scan = new Scanner(System.in);
		long a = scan.nextLong();
		long b = scan.nextLong();
		long c = scan.nextLong();
		long d = scan.nextLong();

		//（a,c）
		long ac = 0;
		ac = a * c;

		//（b,d）
		long bd = 0;
		bd = b * d;

		//（a,d）
		long ad = 0;
		ad = a * d;

		//（b,c）
		long bc = 0;
		bc = b * c;

		long values[] = {ac,bd,ad,bc};
		long max = values[0];

		for(int i = 0; i < values.length; i++) {
			max = Math.max(max, values[i]);
		}


		System.out.println(max);

	}

} Main
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Scanner scan = new Scanner(System.in);
		long a = scan.nextLong();
		long b = scan.nextLong();
		long c = scan.nextLong();
		long d = scan.nextLong();

		//（a,c）
		long ac = 0;
		ac = a * c;

		//（b,d）
		long bd = 0;
		bd = b * d;

		//（a,d）
		long ad = 0;
		ad = a * d;

		//（b,c）
		long bc = 0;
		bc = b * c;

		long values[] = {ac,bd,ad,bc};
		long max = values[0];

		for(int i = 0; i < values.length; i++) {
			max = Math.max(max, values[i]);
		}


		System.out.println(max);

	}

}
