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

public class Main {
    public static void main(String[] args) {
        CP sc = new CP();
        long a= sc.nextLong(), b= sc.nextLong(), c = sc.nextLong(), d = sc.nextLong();
        long x = a*c;
        long y = a*d;
        long z = b*c;
        long v = b*d;
        System.out.println(Math.max(x,Math.max(y,Math.max(z,v))));
    }

    /*****************************************************************************/
    static class CP {
        BufferedReader bufferedReader;
        StringTokenizer stringTokenizer;

        public CP() {
            bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        }

        int nextInt() {
            return Integer.parseInt(NNNN());
        }

        long nextLong() {
            return Long.parseLong(NNNN());
        }

        double nextDouble() {
            return Double.parseDouble(NNNN());
        }

        String NNNN() {
            while (stringTokenizer == null || !stringTokenizer.hasMoreElements()) {
                try {
                    stringTokenizer = new StringTokenizer(bufferedReader.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return stringTokenizer.nextToken();
        }

        String nextLine() {
            String spl = "";
            try {
                spl = bufferedReader.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return spl;
        }
    }
    /*****************************************************************************/
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io import java.util.StringTokenizer; StringTokenizer java.util public class Main {
    public static void main(String[] args) {
        CP sc = new CP();
        long a= sc.nextLong(), b= sc.nextLong(), c = sc.nextLong(), d = sc.nextLong();
        long x = a*c;
        long y = a*d;
        long z = b*c;
        long v = b*d;
        System.out.println(Math.max(x,Math.max(y,Math.max(z,v))));
    }

    /*****************************************************************************/
    static class CP {
        BufferedReader bufferedReader;
        StringTokenizer stringTokenizer;

        public CP() {
            bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        }

        int nextInt() {
            return Integer.parseInt(NNNN());
        }

        long nextLong() {
            return Long.parseLong(NNNN());
        }

        double nextDouble() {
            return Double.parseDouble(NNNN());
        }

        String NNNN() {
            while (stringTokenizer == null || !stringTokenizer.hasMoreElements()) {
                try {
                    stringTokenizer = new StringTokenizer(bufferedReader.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return stringTokenizer.nextToken();
        }

        String nextLine() {
            String spl = "";
            try {
                spl = bufferedReader.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return spl;
        }
    }
    /*****************************************************************************/
} Main public static void main(String[] args) {
        CP sc = new CP();
        long a= sc.nextLong(), b= sc.nextLong(), c = sc.nextLong(), d = sc.nextLong();
        long x = a*c;
        long y = a*d;
        long z = b*c;
        long v = b*d;
        System.out.println(Math.max(x,Math.max(y,Math.max(z,v))));
    } main {
        CP sc = new CP();
        long a= sc.nextLong(), b= sc.nextLong(), c = sc.nextLong(), d = sc.nextLong();
        long x = a*c;
        long y = a*d;
        long z = b*c;
        long v = b*d;
        System.out.println(Math.max(x,Math.max(y,Math.max(z,v))));
    } CP sc = new CP(); sc new CP() long a= sc.nextLong() a sc.nextLong() sc.nextLong sc b= sc.nextLong() b sc.nextLong() sc.nextLong sc c = sc.nextLong() c sc.nextLong() sc.nextLong sc d = sc.nextLong(); d sc.nextLong() sc.nextLong sc long x = a*c; x a*c a c long y = a*d; y a*d a d long z = b*c; z b*c b c long v = b*d; v b*d b d System.out.println(Math.max(x,Math.max(y,Math.max(z,v)))) System.out.println System.out System System.out Math.max(x,Math.max(y,Math.max(z,v))) Math.max Math x Math.max(y,Math.max(z,v)) Math.max Math y Math.max(z,v) Math.max Math z v String[] args args static class CP {
        BufferedReader bufferedReader;
        StringTokenizer stringTokenizer;

        public CP() {
            bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        }

        int nextInt() {
            return Integer.parseInt(NNNN());
        }

        long nextLong() {
            return Long.parseLong(NNNN());
        }

        double nextDouble() {
            return Double.parseDouble(NNNN());
        }

        String NNNN() {
            while (stringTokenizer == null || !stringTokenizer.hasMoreElements()) {
                try {
                    stringTokenizer = new StringTokenizer(bufferedReader.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return stringTokenizer.nextToken();
        }

        String nextLine() {
            String spl = "";
            try {
                spl = bufferedReader.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return spl;
        }
    } CP BufferedReader bufferedReader; bufferedReader StringTokenizer stringTokenizer; stringTokenizer public CP() {
            bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        } CP {
            bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        } bufferedReader = new BufferedReader(new InputStreamReader(System.in)) bufferedReader new BufferedReader(new InputStreamReader(System.in)) int nextInt() {
            return Integer.parseInt(NNNN());
        } nextInt {
            return Integer.parseInt(NNNN());
        } return Integer.parseInt(NNNN()); Integer.parseInt(NNNN()) Integer.parseInt Integer NNNN() NNNN long nextLong() {
            return Long.parseLong(NNNN());
        } nextLong {
            return Long.parseLong(NNNN());
        } return Long.parseLong(NNNN()); Long.parseLong(NNNN()) Long.parseLong Long NNNN() NNNN double nextDouble() {
            return Double.parseDouble(NNNN());
        } nextDouble {
            return Double.parseDouble(NNNN());
        } return Double.parseDouble(NNNN()); Double.parseDouble(NNNN()) Double.parseDouble Double NNNN() NNNN String NNNN() {
            while (stringTokenizer == null || !stringTokenizer.hasMoreElements()) {
                try {
                    stringTokenizer = new StringTokenizer(bufferedReader.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return stringTokenizer.nextToken();
        } NNNN {
            while (stringTokenizer == null || !stringTokenizer.hasMoreElements()) {
                try {
                    stringTokenizer = new StringTokenizer(bufferedReader.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return stringTokenizer.nextToken();
        } while (stringTokenizer == null || !stringTokenizer.hasMoreElements()) {
                try {
                    stringTokenizer = new StringTokenizer(bufferedReader.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } stringTokenizer == null || !stringTokenizer.hasMoreElements() stringTokenizer == null stringTokenizer null !stringTokenizer.hasMoreElements() stringTokenizer.hasMoreElements() stringTokenizer.hasMoreElements stringTokenizer {
                try {
                    stringTokenizer = new StringTokenizer(bufferedReader.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } try {
                    stringTokenizer = new StringTokenizer(bufferedReader.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } IOException e {
                    e.printStackTrace();
                } e.printStackTrace() e.printStackTrace e {
                    stringTokenizer = new StringTokenizer(bufferedReader.readLine());
                } stringTokenizer = new StringTokenizer(bufferedReader.readLine()) stringTokenizer new StringTokenizer(bufferedReader.readLine()) return stringTokenizer.nextToken(); stringTokenizer.nextToken() stringTokenizer.nextToken stringTokenizer String nextLine() {
            String spl = "";
            try {
                spl = bufferedReader.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return spl;
        } nextLine {
            String spl = "";
            try {
                spl = bufferedReader.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return spl;
        } String spl = ""; spl "" try {
                spl = bufferedReader.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } IOException e {
                e.printStackTrace();
            } e.printStackTrace() e.printStackTrace e {
                spl = bufferedReader.readLine();
            } spl = bufferedReader.readLine() spl bufferedReader.readLine() bufferedReader.readLine bufferedReader return spl; spl public class Main {
    public static void main(String[] args) {
        CP sc = new CP();
        long a= sc.nextLong(), b= sc.nextLong(), c = sc.nextLong(), d = sc.nextLong();
        long x = a*c;
        long y = a*d;
        long z = b*c;
        long v = b*d;
        System.out.println(Math.max(x,Math.max(y,Math.max(z,v))));
    }

    /*****************************************************************************/
    static class CP {
        BufferedReader bufferedReader;
        StringTokenizer stringTokenizer;

        public CP() {
            bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        }

        int nextInt() {
            return Integer.parseInt(NNNN());
        }

        long nextLong() {
            return Long.parseLong(NNNN());
        }

        double nextDouble() {
            return Double.parseDouble(NNNN());
        }

        String NNNN() {
            while (stringTokenizer == null || !stringTokenizer.hasMoreElements()) {
                try {
                    stringTokenizer = new StringTokenizer(bufferedReader.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return stringTokenizer.nextToken();
        }

        String nextLine() {
            String spl = "";
            try {
                spl = bufferedReader.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return spl;
        }
    }
    /*****************************************************************************/
} public class Main {
    public static void main(String[] args) {
        CP sc = new CP();
        long a= sc.nextLong(), b= sc.nextLong(), c = sc.nextLong(), d = sc.nextLong();
        long x = a*c;
        long y = a*d;
        long z = b*c;
        long v = b*d;
        System.out.println(Math.max(x,Math.max(y,Math.max(z,v))));
    }

    /*****************************************************************************/
    static class CP {
        BufferedReader bufferedReader;
        StringTokenizer stringTokenizer;

        public CP() {
            bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        }

        int nextInt() {
            return Integer.parseInt(NNNN());
        }

        long nextLong() {
            return Long.parseLong(NNNN());
        }

        double nextDouble() {
            return Double.parseDouble(NNNN());
        }

        String NNNN() {
            while (stringTokenizer == null || !stringTokenizer.hasMoreElements()) {
                try {
                    stringTokenizer = new StringTokenizer(bufferedReader.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return stringTokenizer.nextToken();
        }

        String nextLine() {
            String spl = "";
            try {
                spl = bufferedReader.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return spl;
        }
    }
    /*****************************************************************************/
} Main
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) {
        CP sc = new CP();
        long a= sc.nextLong(), b= sc.nextLong(), c = sc.nextLong(), d = sc.nextLong();
        long x = a*c;
        long y = a*d;
        long z = b*c;
        long v = b*d;
        System.out.println(Math.max(x,Math.max(y,Math.max(z,v))));
    }

    /*****************************************************************************/
    static class CP {
        BufferedReader bufferedReader;
        StringTokenizer stringTokenizer;

        public CP() {
            bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        }

        int nextInt() {
            return Integer.parseInt(NNNN());
        }

        long nextLong() {
            return Long.parseLong(NNNN());
        }

        double nextDouble() {
            return Double.parseDouble(NNNN());
        }

        String NNNN() {
            while (stringTokenizer == null || !stringTokenizer.hasMoreElements()) {
                try {
                    stringTokenizer = new StringTokenizer(bufferedReader.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return stringTokenizer.nextToken();
        }

        String nextLine() {
            String spl = "";
            try {
                spl = bufferedReader.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return spl;
        }
    }
    /*****************************************************************************/
}