import java.io.*;
import java.lang.*;
import java.util.*;

class Main
{
	public static void main(String args[])throws IOException
	{
		FastReader scn = new FastReader();
		long a = scn.nextLong();
		long b = scn.nextLong();
		long c = scn.nextLong();
		long d = scn.nextLong();

		long p1 = a * c;
		long p2 = a * d;
		long p3 = b * c;
		long p4 = b * d;

		System.out.println(Math.max(p1, Math.max(p2, Math.max(p3, p4))));
	}


	static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            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; 
        } 
    }
} import java.io.*; io.* java import java.lang.*; lang.* java import java.util.*; util.* java class Main
{
	public static void main(String args[])throws IOException
	{
		FastReader scn = new FastReader();
		long a = scn.nextLong();
		long b = scn.nextLong();
		long c = scn.nextLong();
		long d = scn.nextLong();

		long p1 = a * c;
		long p2 = a * d;
		long p3 = b * c;
		long p4 = b * d;

		System.out.println(Math.max(p1, Math.max(p2, Math.max(p3, p4))));
	}


	static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            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; 
        } 
    }
} Main public static void main(String args[])throws IOException
	{
		FastReader scn = new FastReader();
		long a = scn.nextLong();
		long b = scn.nextLong();
		long c = scn.nextLong();
		long d = scn.nextLong();

		long p1 = a * c;
		long p2 = a * d;
		long p3 = b * c;
		long p4 = b * d;

		System.out.println(Math.max(p1, Math.max(p2, Math.max(p3, p4))));
	} main {
		FastReader scn = new FastReader();
		long a = scn.nextLong();
		long b = scn.nextLong();
		long c = scn.nextLong();
		long d = scn.nextLong();

		long p1 = a * c;
		long p2 = a * d;
		long p3 = b * c;
		long p4 = b * d;

		System.out.println(Math.max(p1, Math.max(p2, Math.max(p3, p4))));
	} FastReader scn = new FastReader(); scn new FastReader() long a = scn.nextLong(); a scn.nextLong() scn.nextLong scn long b = scn.nextLong(); b scn.nextLong() scn.nextLong scn long c = scn.nextLong(); c scn.nextLong() scn.nextLong scn long d = scn.nextLong(); d scn.nextLong() scn.nextLong scn long p1 = a * c; p1 a * c a c long p2 = a * d; p2 a * d a d long p3 = b * c; p3 b * c b c long p4 = b * d; p4 b * d b d System.out.println(Math.max(p1, Math.max(p2, Math.max(p3, p4)))) System.out.println System.out System System.out Math.max(p1, Math.max(p2, Math.max(p3, p4))) Math.max Math p1 Math.max(p2, Math.max(p3, p4)) Math.max Math p2 Math.max(p3, p4) Math.max Math p3 p4 String args[] args static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            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; 
        } 
    } FastReader BufferedReader br; br StringTokenizer st; st public FastReader() 
        { 
            br = new BufferedReader(new InputStreamReader(System.in)); 
        } FastReader { 
            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
import java.io.*;
import java.lang.*;
import java.util.*;

class Main
{
	public static void main(String args[])throws IOException
	{
		FastReader scn = new FastReader();
		long a = scn.nextLong();
		long b = scn.nextLong();
		long c = scn.nextLong();
		long d = scn.nextLong();

		long p1 = a * c;
		long p2 = a * d;
		long p3 = b * c;
		long p4 = b * d;

		System.out.println(Math.max(p1, Math.max(p2, Math.max(p3, p4))));
	}


	static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            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; 
        } 
    }
}