import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int mod = 1000000007;
        Scanner sc = new Scanner(System.in);
        long a = Long.parseLong(sc.next());
        long b = Long.parseLong(sc.next());
        long c = Long.parseLong(sc.next());
        long d = Long.parseLong(sc.next());

        long max = (a * c);
        max = Math.max(max, (b * c));
        max = Math.max(max, (a * d));
        max = Math.max(max, (b * d));
        System.out.println(max);
    }
} import java.util.Scanner; Scanner java.util public class Main {
    public static void main(String[] args) {
        int mod = 1000000007;
        Scanner sc = new Scanner(System.in);
        long a = Long.parseLong(sc.next());
        long b = Long.parseLong(sc.next());
        long c = Long.parseLong(sc.next());
        long d = Long.parseLong(sc.next());

        long max = (a * c);
        max = Math.max(max, (b * c));
        max = Math.max(max, (a * d));
        max = Math.max(max, (b * d));
        System.out.println(max);
    }
} Main public static void main(String[] args) {
        int mod = 1000000007;
        Scanner sc = new Scanner(System.in);
        long a = Long.parseLong(sc.next());
        long b = Long.parseLong(sc.next());
        long c = Long.parseLong(sc.next());
        long d = Long.parseLong(sc.next());

        long max = (a * c);
        max = Math.max(max, (b * c));
        max = Math.max(max, (a * d));
        max = Math.max(max, (b * d));
        System.out.println(max);
    } main {
        int mod = 1000000007;
        Scanner sc = new Scanner(System.in);
        long a = Long.parseLong(sc.next());
        long b = Long.parseLong(sc.next());
        long c = Long.parseLong(sc.next());
        long d = Long.parseLong(sc.next());

        long max = (a * c);
        max = Math.max(max, (b * c));
        max = Math.max(max, (a * d));
        max = Math.max(max, (b * d));
        System.out.println(max);
    } int mod = 1000000007; mod 1000000007 Scanner sc = new Scanner(System.in); sc new Scanner(System.in) long a = Long.parseLong(sc.next()); a Long.parseLong(sc.next()) Long.parseLong Long sc.next() sc.next sc long b = Long.parseLong(sc.next()); b Long.parseLong(sc.next()) Long.parseLong Long sc.next() sc.next sc long c = Long.parseLong(sc.next()); c Long.parseLong(sc.next()) Long.parseLong Long sc.next() sc.next sc long d = Long.parseLong(sc.next()); d Long.parseLong(sc.next()) Long.parseLong Long sc.next() sc.next sc long max = (a * c); max (a * c) a c max = Math.max(max, (b * c)) max Math.max(max, (b * c)) Math.max Math max (b * c) b c max = Math.max(max, (a * d)) max Math.max(max, (a * d)) Math.max Math max (a * d) a d max = Math.max(max, (b * d)) max Math.max(max, (b * d)) Math.max Math max (b * d) b d System.out.println(max) System.out.println System.out System System.out max String[] args args public class Main {
    public static void main(String[] args) {
        int mod = 1000000007;
        Scanner sc = new Scanner(System.in);
        long a = Long.parseLong(sc.next());
        long b = Long.parseLong(sc.next());
        long c = Long.parseLong(sc.next());
        long d = Long.parseLong(sc.next());

        long max = (a * c);
        max = Math.max(max, (b * c));
        max = Math.max(max, (a * d));
        max = Math.max(max, (b * d));
        System.out.println(max);
    }
} public class Main {
    public static void main(String[] args) {
        int mod = 1000000007;
        Scanner sc = new Scanner(System.in);
        long a = Long.parseLong(sc.next());
        long b = Long.parseLong(sc.next());
        long c = Long.parseLong(sc.next());
        long d = Long.parseLong(sc.next());

        long max = (a * c);
        max = Math.max(max, (b * c));
        max = Math.max(max, (a * d));
        max = Math.max(max, (b * d));
        System.out.println(max);
    }
} Main
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int mod = 1000000007;
        Scanner sc = new Scanner(System.in);
        long a = Long.parseLong(sc.next());
        long b = Long.parseLong(sc.next());
        long c = Long.parseLong(sc.next());
        long d = Long.parseLong(sc.next());

        long max = (a * c);
        max = Math.max(max, (b * c));
        max = Math.max(max, (a * d));
        max = Math.max(max, (b * d));
        System.out.println(max);
    }
}