import java.util.*;

public class Main {


    public static void main(String args[]) {
        Scanner scan = new Scanner(System.in);

        long a = scan.nextLong();
        long b = scan.nextLong();
        long c = scan.nextLong();
        long d = scan.nextLong();
        long ans;

        if (a < 0 && c <0) {
            ans = Math.max(a * c, b*d);
        }
        else if (a < 0 && c>=0) {
            ans = Math.max(b * c, b*d);
        }
        else if (a>=0 && c <0) {
            ans = Math.max(a*d, b*d);
        }
        else {
            ans = b*d;
        }
        System.out.println(ans);
    }
} import java.util.*; util.* java public class Main {


    public static void main(String args[]) {
        Scanner scan = new Scanner(System.in);

        long a = scan.nextLong();
        long b = scan.nextLong();
        long c = scan.nextLong();
        long d = scan.nextLong();
        long ans;

        if (a < 0 && c <0) {
            ans = Math.max(a * c, b*d);
        }
        else if (a < 0 && c>=0) {
            ans = Math.max(b * c, b*d);
        }
        else if (a>=0 && c <0) {
            ans = Math.max(a*d, b*d);
        }
        else {
            ans = b*d;
        }
        System.out.println(ans);
    }
} Main public static void main(String args[]) {
        Scanner scan = new Scanner(System.in);

        long a = scan.nextLong();
        long b = scan.nextLong();
        long c = scan.nextLong();
        long d = scan.nextLong();
        long ans;

        if (a < 0 && c <0) {
            ans = Math.max(a * c, b*d);
        }
        else if (a < 0 && c>=0) {
            ans = Math.max(b * c, b*d);
        }
        else if (a>=0 && c <0) {
            ans = Math.max(a*d, b*d);
        }
        else {
            ans = b*d;
        }
        System.out.println(ans);
    } main {
        Scanner scan = new Scanner(System.in);

        long a = scan.nextLong();
        long b = scan.nextLong();
        long c = scan.nextLong();
        long d = scan.nextLong();
        long ans;

        if (a < 0 && c <0) {
            ans = Math.max(a * c, b*d);
        }
        else if (a < 0 && c>=0) {
            ans = Math.max(b * c, b*d);
        }
        else if (a>=0 && c <0) {
            ans = Math.max(a*d, b*d);
        }
        else {
            ans = b*d;
        }
        System.out.println(ans);
    } Scanner scan = new Scanner(System.in); scan new Scanner(System.in) long a = scan.nextLong(); a scan.nextLong() scan.nextLong scan long b = scan.nextLong(); b scan.nextLong() scan.nextLong scan long c = scan.nextLong(); c scan.nextLong() scan.nextLong scan long d = scan.nextLong(); d scan.nextLong() scan.nextLong scan long ans; ans if (a < 0 && c <0) {
            ans = Math.max(a * c, b*d);
        }
        else if (a < 0 && c>=0) {
            ans = Math.max(b * c, b*d);
        }
        else if (a>=0 && c <0) {
            ans = Math.max(a*d, b*d);
        }
        else {
            ans = b*d;
        } a < 0 && c <0 a < 0 a 0 c <0 c 0 {
            ans = Math.max(a * c, b*d);
        } ans = Math.max(a * c, b*d) ans Math.max(a * c, b*d) Math.max Math a * c a c b*d b d if (a < 0 && c>=0) {
            ans = Math.max(b * c, b*d);
        }
        else if (a>=0 && c <0) {
            ans = Math.max(a*d, b*d);
        }
        else {
            ans = b*d;
        } a < 0 && c>=0 a < 0 a 0 c>=0 c 0 {
            ans = Math.max(b * c, b*d);
        } ans = Math.max(b * c, b*d) ans Math.max(b * c, b*d) Math.max Math b * c b c b*d b d if (a>=0 && c <0) {
            ans = Math.max(a*d, b*d);
        }
        else {
            ans = b*d;
        } a>=0 && c <0 a>=0 a 0 c <0 c 0 {
            ans = Math.max(a*d, b*d);
        } ans = Math.max(a*d, b*d) ans Math.max(a*d, b*d) Math.max Math a*d a d b*d b d {
            ans = b*d;
        } ans = b*d ans b*d b d System.out.println(ans) System.out.println System.out System System.out ans String args[] args public class Main {


    public static void main(String args[]) {
        Scanner scan = new Scanner(System.in);

        long a = scan.nextLong();
        long b = scan.nextLong();
        long c = scan.nextLong();
        long d = scan.nextLong();
        long ans;

        if (a < 0 && c <0) {
            ans = Math.max(a * c, b*d);
        }
        else if (a < 0 && c>=0) {
            ans = Math.max(b * c, b*d);
        }
        else if (a>=0 && c <0) {
            ans = Math.max(a*d, b*d);
        }
        else {
            ans = b*d;
        }
        System.out.println(ans);
    }
} public class Main {


    public static void main(String args[]) {
        Scanner scan = new Scanner(System.in);

        long a = scan.nextLong();
        long b = scan.nextLong();
        long c = scan.nextLong();
        long d = scan.nextLong();
        long ans;

        if (a < 0 && c <0) {
            ans = Math.max(a * c, b*d);
        }
        else if (a < 0 && c>=0) {
            ans = Math.max(b * c, b*d);
        }
        else if (a>=0 && c <0) {
            ans = Math.max(a*d, b*d);
        }
        else {
            ans = b*d;
        }
        System.out.println(ans);
    }
} Main
import java.util.*;

public class Main {


    public static void main(String args[]) {
        Scanner scan = new Scanner(System.in);

        long a = scan.nextLong();
        long b = scan.nextLong();
        long c = scan.nextLong();
        long d = scan.nextLong();
        long ans;

        if (a < 0 && c <0) {
            ans = Math.max(a * c, b*d);
        }
        else if (a < 0 && c>=0) {
            ans = Math.max(b * c, b*d);
        }
        else if (a>=0 && c <0) {
            ans = Math.max(a*d, b*d);
        }
        else {
            ans = b*d;
        }
        System.out.println(ans);
    }
}