import java.util.*;

public class Main {
	static Scanner scan = new Scanner(System.in);
	
	public static void main(String[] args) {
		
		long num[] = new long[4];
		long ans = 0;
		
		for(int i=0;i<4;i++) {
			num[i] = scan.nextLong();
		}
		
		for(int i=0;i<2;i++) {
			for(int j=2;j<4;j++) {
				long kari = num[i]*num[j];
				if(i==0 && j==2) {
					ans = kari;
				}else {
					ans = Math.max(kari, ans);
				}
			}
		}
		
		System.out.println(ans);
	
		
	}
	
	
	public static int gcd(int x,int y) {
		if(x%y == 0) {
			return y;
		}else {
			return gcd(y,x%y);
		}
	}
	
}
 


 import java.util.*; util.* java public class Main {
	static Scanner scan = new Scanner(System.in);
	
	public static void main(String[] args) {
		
		long num[] = new long[4];
		long ans = 0;
		
		for(int i=0;i<4;i++) {
			num[i] = scan.nextLong();
		}
		
		for(int i=0;i<2;i++) {
			for(int j=2;j<4;j++) {
				long kari = num[i]*num[j];
				if(i==0 && j==2) {
					ans = kari;
				}else {
					ans = Math.max(kari, ans);
				}
			}
		}
		
		System.out.println(ans);
	
		
	}
	
	
	public static int gcd(int x,int y) {
		if(x%y == 0) {
			return y;
		}else {
			return gcd(y,x%y);
		}
	}
	
} Main static Scanner scan = new Scanner(System.in); scan new Scanner(System.in) public static void main(String[] args) {
		
		long num[] = new long[4];
		long ans = 0;
		
		for(int i=0;i<4;i++) {
			num[i] = scan.nextLong();
		}
		
		for(int i=0;i<2;i++) {
			for(int j=2;j<4;j++) {
				long kari = num[i]*num[j];
				if(i==0 && j==2) {
					ans = kari;
				}else {
					ans = Math.max(kari, ans);
				}
			}
		}
		
		System.out.println(ans);
	
		
	} main {
		
		long num[] = new long[4];
		long ans = 0;
		
		for(int i=0;i<4;i++) {
			num[i] = scan.nextLong();
		}
		
		for(int i=0;i<2;i++) {
			for(int j=2;j<4;j++) {
				long kari = num[i]*num[j];
				if(i==0 && j==2) {
					ans = kari;
				}else {
					ans = Math.max(kari, ans);
				}
			}
		}
		
		System.out.println(ans);
	
		
	} long num[] = new long[4]; num new long[4] 4 long ans = 0; ans 0 for(int i=0;i<4;i++) {
			num[i] = scan.nextLong();
		} int i=0; int i=0; i 0 i<4 i 4 i++ i++ i {
			num[i] = scan.nextLong();
		} {
			num[i] = scan.nextLong();
		} num[i] = scan.nextLong() num[i] num i scan.nextLong() scan.nextLong scan for(int i=0;i<2;i++) {
			for(int j=2;j<4;j++) {
				long kari = num[i]*num[j];
				if(i==0 && j==2) {
					ans = kari;
				}else {
					ans = Math.max(kari, ans);
				}
			}
		} int i=0; int i=0; i 0 i<2 i 2 i++ i++ i {
			for(int j=2;j<4;j++) {
				long kari = num[i]*num[j];
				if(i==0 && j==2) {
					ans = kari;
				}else {
					ans = Math.max(kari, ans);
				}
			}
		} {
			for(int j=2;j<4;j++) {
				long kari = num[i]*num[j];
				if(i==0 && j==2) {
					ans = kari;
				}else {
					ans = Math.max(kari, ans);
				}
			}
		} for(int j=2;j<4;j++) {
				long kari = num[i]*num[j];
				if(i==0 && j==2) {
					ans = kari;
				}else {
					ans = Math.max(kari, ans);
				}
			} int j=2; int j=2; j 2 j<4 j 4 j++ j++ j {
				long kari = num[i]*num[j];
				if(i==0 && j==2) {
					ans = kari;
				}else {
					ans = Math.max(kari, ans);
				}
			} {
				long kari = num[i]*num[j];
				if(i==0 && j==2) {
					ans = kari;
				}else {
					ans = Math.max(kari, ans);
				}
			} long kari = num[i]*num[j]; kari num[i]*num[j] num[i] num i num[j] num j if(i==0 && j==2) {
					ans = kari;
				}else {
					ans = Math.max(kari, ans);
				} i==0 && j==2 i==0 i 0 j==2 j 2 {
					ans = kari;
				} ans = kari ans kari {
					ans = Math.max(kari, ans);
				} ans = Math.max(kari, ans) ans Math.max(kari, ans) Math.max Math kari ans System.out.println(ans) System.out.println System.out System System.out ans String[] args args public static int gcd(int x,int y) {
		if(x%y == 0) {
			return y;
		}else {
			return gcd(y,x%y);
		}
	} gcd {
		if(x%y == 0) {
			return y;
		}else {
			return gcd(y,x%y);
		}
	} if(x%y == 0) {
			return y;
		}else {
			return gcd(y,x%y);
		} x%y == 0 x%y x y 0 {
			return y;
		} return y; y {
			return gcd(y,x%y);
		} return gcd(y,x%y); gcd(y,x%y) gcd y x%y x y int x x int y y public class Main {
	static Scanner scan = new Scanner(System.in);
	
	public static void main(String[] args) {
		
		long num[] = new long[4];
		long ans = 0;
		
		for(int i=0;i<4;i++) {
			num[i] = scan.nextLong();
		}
		
		for(int i=0;i<2;i++) {
			for(int j=2;j<4;j++) {
				long kari = num[i]*num[j];
				if(i==0 && j==2) {
					ans = kari;
				}else {
					ans = Math.max(kari, ans);
				}
			}
		}
		
		System.out.println(ans);
	
		
	}
	
	
	public static int gcd(int x,int y) {
		if(x%y == 0) {
			return y;
		}else {
			return gcd(y,x%y);
		}
	}
	
} public class Main {
	static Scanner scan = new Scanner(System.in);
	
	public static void main(String[] args) {
		
		long num[] = new long[4];
		long ans = 0;
		
		for(int i=0;i<4;i++) {
			num[i] = scan.nextLong();
		}
		
		for(int i=0;i<2;i++) {
			for(int j=2;j<4;j++) {
				long kari = num[i]*num[j];
				if(i==0 && j==2) {
					ans = kari;
				}else {
					ans = Math.max(kari, ans);
				}
			}
		}
		
		System.out.println(ans);
	
		
	}
	
	
	public static int gcd(int x,int y) {
		if(x%y == 0) {
			return y;
		}else {
			return gcd(y,x%y);
		}
	}
	
} Main
import java.util.*;

public class Main {
	static Scanner scan = new Scanner(System.in);
	
	public static void main(String[] args) {
		
		long num[] = new long[4];
		long ans = 0;
		
		for(int i=0;i<4;i++) {
			num[i] = scan.nextLong();
		}
		
		for(int i=0;i<2;i++) {
			for(int j=2;j<4;j++) {
				long kari = num[i]*num[j];
				if(i==0 && j==2) {
					ans = kari;
				}else {
					ans = Math.max(kari, ans);
				}
			}
		}
		
		System.out.println(ans);
	
		
	}
	
	
	public static int gcd(int x,int y) {
		if(x%y == 0) {
			return y;
		}else {
			return gcd(y,x%y);
		}
	}
	
}
 



