import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Scanner;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author test
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        abc187_b solver = new abc187_b();
        solver.solve(1, in, out);
        out.close();
    }

    static class abc187_b {
        public void solve(int testNumber, Scanner in, PrintWriter out) {
            long aa = in.nextLong();
            long bb = in.nextLong();
            long cc = in.nextLong();
            long dd = in.nextLong();
            long max = -1999999999;

            out.println(Math.max(aa * cc, Math.max(aa * dd, Math.max(bb * cc, dd * bb))));
        /*
        max = Math.max(max,aa*cc);
        max = Math.max(max,aa*dd);
        max = Math.max(max,bb*cc);
        max = Math.max(max,bb*dd);

        out.println(max);


         */
        /*
        int X = Math.max(aa,bb);
        int Y = Math.max(cc,dd);

         */


        /*
        long X = aa<bb?bb:aa;
        long Y = cc<dd?dd:cc;

        if (bb<0 && dd<0){
            out.println(aa * dd);
            return;
        } else if (cc>0 && dd<0) {
            out.println(aa*dd);
            return;

        }
        out.println(X*Y);

         */
/*
        if ((X <0) && (Y>=0))
        {

        }

        if (X<Y) {
            if (X<0) {
                Y = cc;
            }
        } else if (X>Y) {
            if (Y<0) {
                X = aa;
            }
        }
        out.println(X*Y);
         */
        }

    }
}
 import java.io.OutputStream; OutputStream java.io import java.io.IOException; IOException java.io import java.io.InputStream; InputStream java.io import java.io.PrintWriter; PrintWriter java.io import java.util.Scanner; Scanner java.util public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        abc187_b solver = new abc187_b();
        solver.solve(1, in, out);
        out.close();
    }

    static class abc187_b {
        public void solve(int testNumber, Scanner in, PrintWriter out) {
            long aa = in.nextLong();
            long bb = in.nextLong();
            long cc = in.nextLong();
            long dd = in.nextLong();
            long max = -1999999999;

            out.println(Math.max(aa * cc, Math.max(aa * dd, Math.max(bb * cc, dd * bb))));
        /*
        max = Math.max(max,aa*cc);
        max = Math.max(max,aa*dd);
        max = Math.max(max,bb*cc);
        max = Math.max(max,bb*dd);

        out.println(max);


         */
        /*
        int X = Math.max(aa,bb);
        int Y = Math.max(cc,dd);

         */


        /*
        long X = aa<bb?bb:aa;
        long Y = cc<dd?dd:cc;

        if (bb<0 && dd<0){
            out.println(aa * dd);
            return;
        } else if (cc>0 && dd<0) {
            out.println(aa*dd);
            return;

        }
        out.println(X*Y);

         */
/*
        if ((X <0) && (Y>=0))
        {

        }

        if (X<Y) {
            if (X<0) {
                Y = cc;
            }
        } else if (X>Y) {
            if (Y<0) {
                X = aa;
            }
        }
        out.println(X*Y);
         */
        }

    }
} Main public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        abc187_b solver = new abc187_b();
        solver.solve(1, in, out);
        out.close();
    } main {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        abc187_b solver = new abc187_b();
        solver.solve(1, in, out);
        out.close();
    } InputStream inputStream = System.in; inputStream System.in System System.in OutputStream outputStream = System.out; outputStream System.out System System.out Scanner in = new Scanner(inputStream); in new Scanner(inputStream) PrintWriter out = new PrintWriter(outputStream); out new PrintWriter(outputStream) abc187_b solver = new abc187_b(); solver new abc187_b() solver.solve(1, in, out) solver.solve solver 1 in out out.close() out.close out String[] args args static class abc187_b {
        public void solve(int testNumber, Scanner in, PrintWriter out) {
            long aa = in.nextLong();
            long bb = in.nextLong();
            long cc = in.nextLong();
            long dd = in.nextLong();
            long max = -1999999999;

            out.println(Math.max(aa * cc, Math.max(aa * dd, Math.max(bb * cc, dd * bb))));
        /*
        max = Math.max(max,aa*cc);
        max = Math.max(max,aa*dd);
        max = Math.max(max,bb*cc);
        max = Math.max(max,bb*dd);

        out.println(max);


         */
        /*
        int X = Math.max(aa,bb);
        int Y = Math.max(cc,dd);

         */


        /*
        long X = aa<bb?bb:aa;
        long Y = cc<dd?dd:cc;

        if (bb<0 && dd<0){
            out.println(aa * dd);
            return;
        } else if (cc>0 && dd<0) {
            out.println(aa*dd);
            return;

        }
        out.println(X*Y);

         */
/*
        if ((X <0) && (Y>=0))
        {

        }

        if (X<Y) {
            if (X<0) {
                Y = cc;
            }
        } else if (X>Y) {
            if (Y<0) {
                X = aa;
            }
        }
        out.println(X*Y);
         */
        }

    } abc187_b public void solve(int testNumber, Scanner in, PrintWriter out) {
            long aa = in.nextLong();
            long bb = in.nextLong();
            long cc = in.nextLong();
            long dd = in.nextLong();
            long max = -1999999999;

            out.println(Math.max(aa * cc, Math.max(aa * dd, Math.max(bb * cc, dd * bb))));
        /*
        max = Math.max(max,aa*cc);
        max = Math.max(max,aa*dd);
        max = Math.max(max,bb*cc);
        max = Math.max(max,bb*dd);

        out.println(max);


         */
        /*
        int X = Math.max(aa,bb);
        int Y = Math.max(cc,dd);

         */


        /*
        long X = aa<bb?bb:aa;
        long Y = cc<dd?dd:cc;

        if (bb<0 && dd<0){
            out.println(aa * dd);
            return;
        } else if (cc>0 && dd<0) {
            out.println(aa*dd);
            return;

        }
        out.println(X*Y);

         */
/*
        if ((X <0) && (Y>=0))
        {

        }

        if (X<Y) {
            if (X<0) {
                Y = cc;
            }
        } else if (X>Y) {
            if (Y<0) {
                X = aa;
            }
        }
        out.println(X*Y);
         */
        } solve {
            long aa = in.nextLong();
            long bb = in.nextLong();
            long cc = in.nextLong();
            long dd = in.nextLong();
            long max = -1999999999;

            out.println(Math.max(aa * cc, Math.max(aa * dd, Math.max(bb * cc, dd * bb))));
        /*
        max = Math.max(max,aa*cc);
        max = Math.max(max,aa*dd);
        max = Math.max(max,bb*cc);
        max = Math.max(max,bb*dd);

        out.println(max);


         */
        /*
        int X = Math.max(aa,bb);
        int Y = Math.max(cc,dd);

         */


        /*
        long X = aa<bb?bb:aa;
        long Y = cc<dd?dd:cc;

        if (bb<0 && dd<0){
            out.println(aa * dd);
            return;
        } else if (cc>0 && dd<0) {
            out.println(aa*dd);
            return;

        }
        out.println(X*Y);

         */
/*
        if ((X <0) && (Y>=0))
        {

        }

        if (X<Y) {
            if (X<0) {
                Y = cc;
            }
        } else if (X>Y) {
            if (Y<0) {
                X = aa;
            }
        }
        out.println(X*Y);
         */
        } long aa = in.nextLong(); aa in.nextLong() in.nextLong in long bb = in.nextLong(); bb in.nextLong() in.nextLong in long cc = in.nextLong(); cc in.nextLong() in.nextLong in long dd = in.nextLong(); dd in.nextLong() in.nextLong in long max = -1999999999; max -1999999999 1999999999 out.println(Math.max(aa * cc, Math.max(aa * dd, Math.max(bb * cc, dd * bb)))) out.println out Math.max(aa * cc, Math.max(aa * dd, Math.max(bb * cc, dd * bb))) Math.max Math aa * cc aa cc Math.max(aa * dd, Math.max(bb * cc, dd * bb)) Math.max Math aa * dd aa dd Math.max(bb * cc, dd * bb) Math.max Math bb * cc bb cc dd * bb dd bb int testNumber testNumber Scanner in in PrintWriter out out public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        abc187_b solver = new abc187_b();
        solver.solve(1, in, out);
        out.close();
    }

    static class abc187_b {
        public void solve(int testNumber, Scanner in, PrintWriter out) {
            long aa = in.nextLong();
            long bb = in.nextLong();
            long cc = in.nextLong();
            long dd = in.nextLong();
            long max = -1999999999;

            out.println(Math.max(aa * cc, Math.max(aa * dd, Math.max(bb * cc, dd * bb))));
        /*
        max = Math.max(max,aa*cc);
        max = Math.max(max,aa*dd);
        max = Math.max(max,bb*cc);
        max = Math.max(max,bb*dd);

        out.println(max);


         */
        /*
        int X = Math.max(aa,bb);
        int Y = Math.max(cc,dd);

         */


        /*
        long X = aa<bb?bb:aa;
        long Y = cc<dd?dd:cc;

        if (bb<0 && dd<0){
            out.println(aa * dd);
            return;
        } else if (cc>0 && dd<0) {
            out.println(aa*dd);
            return;

        }
        out.println(X*Y);

         */
/*
        if ((X <0) && (Y>=0))
        {

        }

        if (X<Y) {
            if (X<0) {
                Y = cc;
            }
        } else if (X>Y) {
            if (Y<0) {
                X = aa;
            }
        }
        out.println(X*Y);
         */
        }

    }
} public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        abc187_b solver = new abc187_b();
        solver.solve(1, in, out);
        out.close();
    }

    static class abc187_b {
        public void solve(int testNumber, Scanner in, PrintWriter out) {
            long aa = in.nextLong();
            long bb = in.nextLong();
            long cc = in.nextLong();
            long dd = in.nextLong();
            long max = -1999999999;

            out.println(Math.max(aa * cc, Math.max(aa * dd, Math.max(bb * cc, dd * bb))));
        /*
        max = Math.max(max,aa*cc);
        max = Math.max(max,aa*dd);
        max = Math.max(max,bb*cc);
        max = Math.max(max,bb*dd);

        out.println(max);


         */
        /*
        int X = Math.max(aa,bb);
        int Y = Math.max(cc,dd);

         */


        /*
        long X = aa<bb?bb:aa;
        long Y = cc<dd?dd:cc;

        if (bb<0 && dd<0){
            out.println(aa * dd);
            return;
        } else if (cc>0 && dd<0) {
            out.println(aa*dd);
            return;

        }
        out.println(X*Y);

         */
/*
        if ((X <0) && (Y>=0))
        {

        }

        if (X<Y) {
            if (X<0) {
                Y = cc;
            }
        } else if (X>Y) {
            if (Y<0) {
                X = aa;
            }
        }
        out.println(X*Y);
         */
        }

    }
} Main
import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Scanner;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author test
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        abc187_b solver = new abc187_b();
        solver.solve(1, in, out);
        out.close();
    }

    static class abc187_b {
        public void solve(int testNumber, Scanner in, PrintWriter out) {
            long aa = in.nextLong();
            long bb = in.nextLong();
            long cc = in.nextLong();
            long dd = in.nextLong();
            long max = -1999999999;

            out.println(Math.max(aa * cc, Math.max(aa * dd, Math.max(bb * cc, dd * bb))));
        /*
        max = Math.max(max,aa*cc);
        max = Math.max(max,aa*dd);
        max = Math.max(max,bb*cc);
        max = Math.max(max,bb*dd);

        out.println(max);


         */
        /*
        int X = Math.max(aa,bb);
        int Y = Math.max(cc,dd);

         */


        /*
        long X = aa<bb?bb:aa;
        long Y = cc<dd?dd:cc;

        if (bb<0 && dd<0){
            out.println(aa * dd);
            return;
        } else if (cc>0 && dd<0) {
            out.println(aa*dd);
            return;

        }
        out.println(X*Y);

         */
/*
        if ((X <0) && (Y>=0))
        {

        }

        if (X<Y) {
            if (X<0) {
                Y = cc;
            }
        } else if (X>Y) {
            if (Y<0) {
                X = aa;
            }
        }
        out.println(X*Y);
         */
        }

    }
}

