import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		try (Scanner sc = new Scanner(System.in);) {
			long a = sc.nextLong();
			long b = sc.nextLong();
			long c = sc.nextLong();
			long d = sc.nextLong();
			
			long result = Long.MIN_VALUE;
			result = Math.max(result, a*c);
			result = Math.max(result, a*d);
			result = Math.max(result, b*c);
			result = Math.max(result, b*d);
			
			System.out.println(result);

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

} import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args) {
		try (Scanner sc = new Scanner(System.in);) {
			long a = sc.nextLong();
			long b = sc.nextLong();
			long c = sc.nextLong();
			long d = sc.nextLong();
			
			long result = Long.MIN_VALUE;
			result = Math.max(result, a*c);
			result = Math.max(result, a*d);
			result = Math.max(result, b*c);
			result = Math.max(result, b*d);
			
			System.out.println(result);

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

} Main public static void main(String[] args) {
		try (Scanner sc = new Scanner(System.in);) {
			long a = sc.nextLong();
			long b = sc.nextLong();
			long c = sc.nextLong();
			long d = sc.nextLong();
			
			long result = Long.MIN_VALUE;
			result = Math.max(result, a*c);
			result = Math.max(result, a*d);
			result = Math.max(result, b*c);
			result = Math.max(result, b*d);
			
			System.out.println(result);

		} catch (Exception e) {
			e.printStackTrace();
		}

	} main {
		try (Scanner sc = new Scanner(System.in);) {
			long a = sc.nextLong();
			long b = sc.nextLong();
			long c = sc.nextLong();
			long d = sc.nextLong();
			
			long result = Long.MIN_VALUE;
			result = Math.max(result, a*c);
			result = Math.max(result, a*d);
			result = Math.max(result, b*c);
			result = Math.max(result, b*d);
			
			System.out.println(result);

		} catch (Exception e) {
			e.printStackTrace();
		}

	} try (Scanner sc = new Scanner(System.in);) {
			long a = sc.nextLong();
			long b = sc.nextLong();
			long c = sc.nextLong();
			long d = sc.nextLong();
			
			long result = Long.MIN_VALUE;
			result = Math.max(result, a*c);
			result = Math.max(result, a*d);
			result = Math.max(result, b*c);
			result = Math.max(result, b*d);
			
			System.out.println(result);

		} catch (Exception e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		} Exception e {
			e.printStackTrace();
		} e.printStackTrace() e.printStackTrace e {
			long a = sc.nextLong();
			long b = sc.nextLong();
			long c = sc.nextLong();
			long d = sc.nextLong();
			
			long result = Long.MIN_VALUE;
			result = Math.max(result, a*c);
			result = Math.max(result, a*d);
			result = Math.max(result, b*c);
			result = Math.max(result, b*d);
			
			System.out.println(result);

		} Scanner sc = new Scanner(System.in) Scanner sc = new Scanner(System.in) new Scanner(System.in) long a = sc.nextLong(); a sc.nextLong() sc.nextLong sc long b = sc.nextLong(); b sc.nextLong() sc.nextLong sc long c = sc.nextLong(); c sc.nextLong() sc.nextLong sc long d = sc.nextLong(); d sc.nextLong() sc.nextLong sc long result = Long.MIN_VALUE; result Long.MIN_VALUE Long Long.MIN_VALUE result = Math.max(result, a*c) result Math.max(result, a*c) Math.max Math result a*c a c result = Math.max(result, a*d) result Math.max(result, a*d) Math.max Math result a*d a d result = Math.max(result, b*c) result Math.max(result, b*c) Math.max Math result b*c b c result = Math.max(result, b*d) result Math.max(result, b*d) Math.max Math result b*d b d System.out.println(result) System.out.println System.out System System.out result String[] args args public class Main {
	public static void main(String[] args) {
		try (Scanner sc = new Scanner(System.in);) {
			long a = sc.nextLong();
			long b = sc.nextLong();
			long c = sc.nextLong();
			long d = sc.nextLong();
			
			long result = Long.MIN_VALUE;
			result = Math.max(result, a*c);
			result = Math.max(result, a*d);
			result = Math.max(result, b*c);
			result = Math.max(result, b*d);
			
			System.out.println(result);

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

} public class Main {
	public static void main(String[] args) {
		try (Scanner sc = new Scanner(System.in);) {
			long a = sc.nextLong();
			long b = sc.nextLong();
			long c = sc.nextLong();
			long d = sc.nextLong();
			
			long result = Long.MIN_VALUE;
			result = Math.max(result, a*c);
			result = Math.max(result, a*d);
			result = Math.max(result, b*c);
			result = Math.max(result, b*d);
			
			System.out.println(result);

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

} Main
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		try (Scanner sc = new Scanner(System.in);) {
			long a = sc.nextLong();
			long b = sc.nextLong();
			long c = sc.nextLong();
			long d = sc.nextLong();
			
			long result = Long.MIN_VALUE;
			result = Math.max(result, a*c);
			result = Math.max(result, a*d);
			result = Math.max(result, b*c);
			result = Math.max(result, b*d);
			
			System.out.println(result);

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}