import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.Scanner; 
import java.util.StringTokenizer; 

public class Main
{ 
	static class FastScanner 
	{ 
		BufferedReader br; 
		StringTokenizer st; 
		
		public FastScanner() 
		{ 
			br = new BufferedReader(new
					InputStreamReader(System.in)); 
		} 
		
		String next() 
		{ 
			while (st == null || !st.hasMoreElements()) 
			{ 
				try
				{ 
					st = new StringTokenizer(br.readLine()); 
				} 
				catch (IOException  e) 
				{ 
					e.printStackTrace(); 
				} 
			} 
			return st.nextToken(); 
		} 
		
		int nextInt() 
		{ 
			return Integer.parseInt(next()); 
		} 
		
		long nextLong() 
		{ 
			return Long.parseLong(next()); 
		} 
		
		double nextDouble() 
		{ 
			return Double.parseDouble(next()); 
		} 
		
		String nextLine() 
		{ 
			String str = ""; 
			try
			{ 
				str = br.readLine(); 
			} 
			catch (IOException e) 
			{ 
				e.printStackTrace(); 
			} 
			return str; 
		} 
	}
	public static void main(String[] args)
	{
		FastScanner fc=new FastScanner();
		long a = fc.nextLong();
		long b = fc.nextLong();
		long c = fc.nextLong();
		long d = fc.nextLong();
		long res1 = Math.max((a*c), (a*d));
		long res2 = Math.max((b*c), (b*d));
		long res=Math.max(res1, res2);
		System.out.print(res);
	}
}
 import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io import java.util.Scanner; Scanner java.util import java.util.StringTokenizer; StringTokenizer java.util public class Main
{ 
	static class FastScanner 
	{ 
		BufferedReader br; 
		StringTokenizer st; 
		
		public FastScanner() 
		{ 
			br = new BufferedReader(new
					InputStreamReader(System.in)); 
		} 
		
		String next() 
		{ 
			while (st == null || !st.hasMoreElements()) 
			{ 
				try
				{ 
					st = new StringTokenizer(br.readLine()); 
				} 
				catch (IOException  e) 
				{ 
					e.printStackTrace(); 
				} 
			} 
			return st.nextToken(); 
		} 
		
		int nextInt() 
		{ 
			return Integer.parseInt(next()); 
		} 
		
		long nextLong() 
		{ 
			return Long.parseLong(next()); 
		} 
		
		double nextDouble() 
		{ 
			return Double.parseDouble(next()); 
		} 
		
		String nextLine() 
		{ 
			String str = ""; 
			try
			{ 
				str = br.readLine(); 
			} 
			catch (IOException e) 
			{ 
				e.printStackTrace(); 
			} 
			return str; 
		} 
	}
	public static void main(String[] args)
	{
		FastScanner fc=new FastScanner();
		long a = fc.nextLong();
		long b = fc.nextLong();
		long c = fc.nextLong();
		long d = fc.nextLong();
		long res1 = Math.max((a*c), (a*d));
		long res2 = Math.max((b*c), (b*d));
		long res=Math.max(res1, res2);
		System.out.print(res);
	}
} Main public static void main(String[] args)
	{
		FastScanner fc=new FastScanner();
		long a = fc.nextLong();
		long b = fc.nextLong();
		long c = fc.nextLong();
		long d = fc.nextLong();
		long res1 = Math.max((a*c), (a*d));
		long res2 = Math.max((b*c), (b*d));
		long res=Math.max(res1, res2);
		System.out.print(res);
	} main {
		FastScanner fc=new FastScanner();
		long a = fc.nextLong();
		long b = fc.nextLong();
		long c = fc.nextLong();
		long d = fc.nextLong();
		long res1 = Math.max((a*c), (a*d));
		long res2 = Math.max((b*c), (b*d));
		long res=Math.max(res1, res2);
		System.out.print(res);
	} FastScanner fc=new FastScanner(); fc new FastScanner() long a = fc.nextLong(); a fc.nextLong() fc.nextLong fc long b = fc.nextLong(); b fc.nextLong() fc.nextLong fc long c = fc.nextLong(); c fc.nextLong() fc.nextLong fc long d = fc.nextLong(); d fc.nextLong() fc.nextLong fc long res1 = Math.max((a*c), (a*d)); res1 Math.max((a*c), (a*d)) Math.max Math (a*c) a c (a*d) a d long res2 = Math.max((b*c), (b*d)); res2 Math.max((b*c), (b*d)) Math.max Math (b*c) b c (b*d) b d long res=Math.max(res1, res2); res Math.max(res1, res2) Math.max Math res1 res2 System.out.print(res) System.out.print System.out System System.out res String[] args args static class FastScanner 
	{ 
		BufferedReader br; 
		StringTokenizer st; 
		
		public FastScanner() 
		{ 
			br = new BufferedReader(new
					InputStreamReader(System.in)); 
		} 
		
		String next() 
		{ 
			while (st == null || !st.hasMoreElements()) 
			{ 
				try
				{ 
					st = new StringTokenizer(br.readLine()); 
				} 
				catch (IOException  e) 
				{ 
					e.printStackTrace(); 
				} 
			} 
			return st.nextToken(); 
		} 
		
		int nextInt() 
		{ 
			return Integer.parseInt(next()); 
		} 
		
		long nextLong() 
		{ 
			return Long.parseLong(next()); 
		} 
		
		double nextDouble() 
		{ 
			return Double.parseDouble(next()); 
		} 
		
		String nextLine() 
		{ 
			String str = ""; 
			try
			{ 
				str = br.readLine(); 
			} 
			catch (IOException e) 
			{ 
				e.printStackTrace(); 
			} 
			return str; 
		} 
	} FastScanner BufferedReader br; br StringTokenizer st; st public FastScanner() 
		{ 
			br = new BufferedReader(new
					InputStreamReader(System.in)); 
		} FastScanner { 
			br = new BufferedReader(new
					InputStreamReader(System.in)); 
		} br = new BufferedReader(new
					InputStreamReader(System.in)) br new BufferedReader(new
					InputStreamReader(System.in)) String next() 
		{ 
			while (st == null || !st.hasMoreElements()) 
			{ 
				try
				{ 
					st = new StringTokenizer(br.readLine()); 
				} 
				catch (IOException  e) 
				{ 
					e.printStackTrace(); 
				} 
			} 
			return st.nextToken(); 
		} next { 
			while (st == null || !st.hasMoreElements()) 
			{ 
				try
				{ 
					st = new StringTokenizer(br.readLine()); 
				} 
				catch (IOException  e) 
				{ 
					e.printStackTrace(); 
				} 
			} 
			return st.nextToken(); 
		} while (st == null || !st.hasMoreElements()) 
			{ 
				try
				{ 
					st = new StringTokenizer(br.readLine()); 
				} 
				catch (IOException  e) 
				{ 
					e.printStackTrace(); 
				} 
			} st == null || !st.hasMoreElements() st == null st null !st.hasMoreElements() st.hasMoreElements() st.hasMoreElements st { 
				try
				{ 
					st = new StringTokenizer(br.readLine()); 
				} 
				catch (IOException  e) 
				{ 
					e.printStackTrace(); 
				} 
			} try
				{ 
					st = new StringTokenizer(br.readLine()); 
				} 
				catch (IOException  e) 
				{ 
					e.printStackTrace(); 
				} catch (IOException  e) 
				{ 
					e.printStackTrace(); 
				} IOException  e { 
					e.printStackTrace(); 
				} e.printStackTrace() e.printStackTrace e { 
					st = new StringTokenizer(br.readLine()); 
				} st = new StringTokenizer(br.readLine()) st new StringTokenizer(br.readLine()) return st.nextToken(); st.nextToken() st.nextToken st int nextInt() 
		{ 
			return Integer.parseInt(next()); 
		} nextInt { 
			return Integer.parseInt(next()); 
		} return Integer.parseInt(next()); Integer.parseInt(next()) Integer.parseInt Integer next() next long nextLong() 
		{ 
			return Long.parseLong(next()); 
		} nextLong { 
			return Long.parseLong(next()); 
		} return Long.parseLong(next()); Long.parseLong(next()) Long.parseLong Long next() next double nextDouble() 
		{ 
			return Double.parseDouble(next()); 
		} nextDouble { 
			return Double.parseDouble(next()); 
		} return Double.parseDouble(next()); Double.parseDouble(next()) Double.parseDouble Double next() next String nextLine() 
		{ 
			String str = ""; 
			try
			{ 
				str = br.readLine(); 
			} 
			catch (IOException e) 
			{ 
				e.printStackTrace(); 
			} 
			return str; 
		} nextLine { 
			String str = ""; 
			try
			{ 
				str = br.readLine(); 
			} 
			catch (IOException e) 
			{ 
				e.printStackTrace(); 
			} 
			return str; 
		} String str = ""; str "" try
			{ 
				str = br.readLine(); 
			} 
			catch (IOException e) 
			{ 
				e.printStackTrace(); 
			} catch (IOException e) 
			{ 
				e.printStackTrace(); 
			} IOException e { 
				e.printStackTrace(); 
			} e.printStackTrace() e.printStackTrace e { 
				str = br.readLine(); 
			} str = br.readLine() str br.readLine() br.readLine br return str; str public class Main
{ 
	static class FastScanner 
	{ 
		BufferedReader br; 
		StringTokenizer st; 
		
		public FastScanner() 
		{ 
			br = new BufferedReader(new
					InputStreamReader(System.in)); 
		} 
		
		String next() 
		{ 
			while (st == null || !st.hasMoreElements()) 
			{ 
				try
				{ 
					st = new StringTokenizer(br.readLine()); 
				} 
				catch (IOException  e) 
				{ 
					e.printStackTrace(); 
				} 
			} 
			return st.nextToken(); 
		} 
		
		int nextInt() 
		{ 
			return Integer.parseInt(next()); 
		} 
		
		long nextLong() 
		{ 
			return Long.parseLong(next()); 
		} 
		
		double nextDouble() 
		{ 
			return Double.parseDouble(next()); 
		} 
		
		String nextLine() 
		{ 
			String str = ""; 
			try
			{ 
				str = br.readLine(); 
			} 
			catch (IOException e) 
			{ 
				e.printStackTrace(); 
			} 
			return str; 
		} 
	}
	public static void main(String[] args)
	{
		FastScanner fc=new FastScanner();
		long a = fc.nextLong();
		long b = fc.nextLong();
		long c = fc.nextLong();
		long d = fc.nextLong();
		long res1 = Math.max((a*c), (a*d));
		long res2 = Math.max((b*c), (b*d));
		long res=Math.max(res1, res2);
		System.out.print(res);
	}
} public class Main
{ 
	static class FastScanner 
	{ 
		BufferedReader br; 
		StringTokenizer st; 
		
		public FastScanner() 
		{ 
			br = new BufferedReader(new
					InputStreamReader(System.in)); 
		} 
		
		String next() 
		{ 
			while (st == null || !st.hasMoreElements()) 
			{ 
				try
				{ 
					st = new StringTokenizer(br.readLine()); 
				} 
				catch (IOException  e) 
				{ 
					e.printStackTrace(); 
				} 
			} 
			return st.nextToken(); 
		} 
		
		int nextInt() 
		{ 
			return Integer.parseInt(next()); 
		} 
		
		long nextLong() 
		{ 
			return Long.parseLong(next()); 
		} 
		
		double nextDouble() 
		{ 
			return Double.parseDouble(next()); 
		} 
		
		String nextLine() 
		{ 
			String str = ""; 
			try
			{ 
				str = br.readLine(); 
			} 
			catch (IOException e) 
			{ 
				e.printStackTrace(); 
			} 
			return str; 
		} 
	}
	public static void main(String[] args)
	{
		FastScanner fc=new FastScanner();
		long a = fc.nextLong();
		long b = fc.nextLong();
		long c = fc.nextLong();
		long d = fc.nextLong();
		long res1 = Math.max((a*c), (a*d));
		long res2 = Math.max((b*c), (b*d));
		long res=Math.max(res1, res2);
		System.out.print(res);
	}
} Main
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.Scanner; 
import java.util.StringTokenizer; 

public class Main
{ 
	static class FastScanner 
	{ 
		BufferedReader br; 
		StringTokenizer st; 
		
		public FastScanner() 
		{ 
			br = new BufferedReader(new
					InputStreamReader(System.in)); 
		} 
		
		String next() 
		{ 
			while (st == null || !st.hasMoreElements()) 
			{ 
				try
				{ 
					st = new StringTokenizer(br.readLine()); 
				} 
				catch (IOException  e) 
				{ 
					e.printStackTrace(); 
				} 
			} 
			return st.nextToken(); 
		} 
		
		int nextInt() 
		{ 
			return Integer.parseInt(next()); 
		} 
		
		long nextLong() 
		{ 
			return Long.parseLong(next()); 
		} 
		
		double nextDouble() 
		{ 
			return Double.parseDouble(next()); 
		} 
		
		String nextLine() 
		{ 
			String str = ""; 
			try
			{ 
				str = br.readLine(); 
			} 
			catch (IOException e) 
			{ 
				e.printStackTrace(); 
			} 
			return str; 
		} 
	}
	public static void main(String[] args)
	{
		FastScanner fc=new FastScanner();
		long a = fc.nextLong();
		long b = fc.nextLong();
		long c = fc.nextLong();
		long d = fc.nextLong();
		long res1 = Math.max((a*c), (a*d));
		long res2 = Math.max((b*c), (b*d));
		long res=Math.max(res1, res2);
		System.out.print(res);
	}
}

