import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        // 整数の入力
        long a = sc.nextInt();
        long b = sc.nextInt();
        long c = sc.nextInt();
        long d = sc.nextInt();
        long max = Long.MIN_VALUE;

        List<Long> ab = new ArrayList<>();
        ab.add(a);
        if (a * b < 0) {
            ab.add(0L);
        }
        ab.add(b);
        List<Long> cd = new ArrayList<>();
        cd.add(c);
        if (c * d < 0) {
            cd.add(0L);
        }
        cd.add(d);

        for (long x: ab) {
            for (long y: cd) {
                max = Math.max(x * y, max);
            }
        }

        System.out.print(max);
    }
} import java.util.*; util.* java public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        // 整数の入力
        long a = sc.nextInt();
        long b = sc.nextInt();
        long c = sc.nextInt();
        long d = sc.nextInt();
        long max = Long.MIN_VALUE;

        List<Long> ab = new ArrayList<>();
        ab.add(a);
        if (a * b < 0) {
            ab.add(0L);
        }
        ab.add(b);
        List<Long> cd = new ArrayList<>();
        cd.add(c);
        if (c * d < 0) {
            cd.add(0L);
        }
        cd.add(d);

        for (long x: ab) {
            for (long y: cd) {
                max = Math.max(x * y, max);
            }
        }

        System.out.print(max);
    }
} Main public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        // 整数の入力
        long a = sc.nextInt();
        long b = sc.nextInt();
        long c = sc.nextInt();
        long d = sc.nextInt();
        long max = Long.MIN_VALUE;

        List<Long> ab = new ArrayList<>();
        ab.add(a);
        if (a * b < 0) {
            ab.add(0L);
        }
        ab.add(b);
        List<Long> cd = new ArrayList<>();
        cd.add(c);
        if (c * d < 0) {
            cd.add(0L);
        }
        cd.add(d);

        for (long x: ab) {
            for (long y: cd) {
                max = Math.max(x * y, max);
            }
        }

        System.out.print(max);
    } main {
        Scanner sc = new Scanner(System.in);
        // 整数の入力
        long a = sc.nextInt();
        long b = sc.nextInt();
        long c = sc.nextInt();
        long d = sc.nextInt();
        long max = Long.MIN_VALUE;

        List<Long> ab = new ArrayList<>();
        ab.add(a);
        if (a * b < 0) {
            ab.add(0L);
        }
        ab.add(b);
        List<Long> cd = new ArrayList<>();
        cd.add(c);
        if (c * d < 0) {
            cd.add(0L);
        }
        cd.add(d);

        for (long x: ab) {
            for (long y: cd) {
                max = Math.max(x * y, max);
            }
        }

        System.out.print(max);
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) long a = sc.nextInt(); a sc.nextInt() sc.nextInt sc long b = sc.nextInt(); b sc.nextInt() sc.nextInt sc long c = sc.nextInt(); c sc.nextInt() sc.nextInt sc long d = sc.nextInt(); d sc.nextInt() sc.nextInt sc long max = Long.MIN_VALUE; max Long.MIN_VALUE Long Long.MIN_VALUE List<Long> ab = new ArrayList<>(); ab new ArrayList<>() ab.add(a) ab.add ab a if (a * b < 0) {
            ab.add(0L);
        } a * b < 0 a * b a b 0 {
            ab.add(0L);
        } ab.add(0L) ab.add ab 0L ab.add(b) ab.add ab b List<Long> cd = new ArrayList<>(); cd new ArrayList<>() cd.add(c) cd.add cd c if (c * d < 0) {
            cd.add(0L);
        } c * d < 0 c * d c d 0 {
            cd.add(0L);
        } cd.add(0L) cd.add cd 0L cd.add(d) cd.add cd d for (long x: ab) {
            for (long y: cd) {
                max = Math.max(x * y, max);
            }
        } long x ab {
            for (long y: cd) {
                max = Math.max(x * y, max);
            }
        } {
            for (long y: cd) {
                max = Math.max(x * y, max);
            }
        } for (long y: cd) {
                max = Math.max(x * y, max);
            } long y cd {
                max = Math.max(x * y, max);
            } {
                max = Math.max(x * y, max);
            } max = Math.max(x * y, max) max Math.max(x * y, max) Math.max Math x * y x y max System.out.print(max) System.out.print System.out System System.out max String[] args args public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        // 整数の入力
        long a = sc.nextInt();
        long b = sc.nextInt();
        long c = sc.nextInt();
        long d = sc.nextInt();
        long max = Long.MIN_VALUE;

        List<Long> ab = new ArrayList<>();
        ab.add(a);
        if (a * b < 0) {
            ab.add(0L);
        }
        ab.add(b);
        List<Long> cd = new ArrayList<>();
        cd.add(c);
        if (c * d < 0) {
            cd.add(0L);
        }
        cd.add(d);

        for (long x: ab) {
            for (long y: cd) {
                max = Math.max(x * y, max);
            }
        }

        System.out.print(max);
    }
} public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        // 整数の入力
        long a = sc.nextInt();
        long b = sc.nextInt();
        long c = sc.nextInt();
        long d = sc.nextInt();
        long max = Long.MIN_VALUE;

        List<Long> ab = new ArrayList<>();
        ab.add(a);
        if (a * b < 0) {
            ab.add(0L);
        }
        ab.add(b);
        List<Long> cd = new ArrayList<>();
        cd.add(c);
        if (c * d < 0) {
            cd.add(0L);
        }
        cd.add(d);

        for (long x: ab) {
            for (long y: cd) {
                max = Math.max(x * y, max);
            }
        }

        System.out.print(max);
    }
} Main
import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        // 整数の入力
        long a = sc.nextInt();
        long b = sc.nextInt();
        long c = sc.nextInt();
        long d = sc.nextInt();
        long max = Long.MIN_VALUE;

        List<Long> ab = new ArrayList<>();
        ab.add(a);
        if (a * b < 0) {
            ab.add(0L);
        }
        ab.add(b);
        List<Long> cd = new ArrayList<>();
        cd.add(c);
        if (c * d < 0) {
            cd.add(0L);
        }
        cd.add(d);

        for (long x: ab) {
            for (long y: cd) {
                max = Math.max(x * y, max);
            }
        }

        System.out.print(max);
    }
}
