import java.util.Scanner;
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 x;
        long y;
        long s;
        long t;
        long z;
        long zz;
        long zzz;
        long zzzz;
        
        if(b<0 && d<0 ) {
        	z=a*c;
        } else if(a>0 && c>0) {
        	z=b*d;
        }else if(b<0 && c>0) {
        	z=b*c;
        }else if(a>0 && d<0) {
        	z=a*d;
        } else {
        	s=a*c;
        	t=b*d;
        	x=a*d;
        	y=b*c;
        	zz=Math.max(s,t);
        	zzz=Math.max(zz,x);
        	zzzz=Math.max(zzz,y);
        	z=Math.max(zzzz, 0);
        }
        
        System.out.println(z);
        

    }
} import java.util.Scanner; Scanner 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 x;
        long y;
        long s;
        long t;
        long z;
        long zz;
        long zzz;
        long zzzz;
        
        if(b<0 && d<0 ) {
        	z=a*c;
        } else if(a>0 && c>0) {
        	z=b*d;
        }else if(b<0 && c>0) {
        	z=b*c;
        }else if(a>0 && d<0) {
        	z=a*d;
        } else {
        	s=a*c;
        	t=b*d;
        	x=a*d;
        	y=b*c;
        	zz=Math.max(s,t);
        	zzz=Math.max(zz,x);
        	zzzz=Math.max(zzz,y);
        	z=Math.max(zzzz, 0);
        }
        
        System.out.println(z);
        

    }
} 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 x;
        long y;
        long s;
        long t;
        long z;
        long zz;
        long zzz;
        long zzzz;
        
        if(b<0 && d<0 ) {
        	z=a*c;
        } else if(a>0 && c>0) {
        	z=b*d;
        }else if(b<0 && c>0) {
        	z=b*c;
        }else if(a>0 && d<0) {
        	z=a*d;
        } else {
        	s=a*c;
        	t=b*d;
        	x=a*d;
        	y=b*c;
        	zz=Math.max(s,t);
        	zzz=Math.max(zz,x);
        	zzzz=Math.max(zzz,y);
        	z=Math.max(zzzz, 0);
        }
        
        System.out.println(z);
        

    } main {
        Scanner sc = new Scanner(System.in);
        // 整数の入力
        long a = sc.nextInt();
        long b = sc.nextInt();
        long c = sc.nextInt();
        long d = sc.nextInt();
        long x;
        long y;
        long s;
        long t;
        long z;
        long zz;
        long zzz;
        long zzzz;
        
        if(b<0 && d<0 ) {
        	z=a*c;
        } else if(a>0 && c>0) {
        	z=b*d;
        }else if(b<0 && c>0) {
        	z=b*c;
        }else if(a>0 && d<0) {
        	z=a*d;
        } else {
        	s=a*c;
        	t=b*d;
        	x=a*d;
        	y=b*c;
        	zz=Math.max(s,t);
        	zzz=Math.max(zz,x);
        	zzzz=Math.max(zzz,y);
        	z=Math.max(zzzz, 0);
        }
        
        System.out.println(z);
        

    } 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 x; x long y; y long s; s long t; t long z; z long zz; zz long zzz; zzz long zzzz; zzzz if(b<0 && d<0 ) {
        	z=a*c;
        } else if(a>0 && c>0) {
        	z=b*d;
        }else if(b<0 && c>0) {
        	z=b*c;
        }else if(a>0 && d<0) {
        	z=a*d;
        } else {
        	s=a*c;
        	t=b*d;
        	x=a*d;
        	y=b*c;
        	zz=Math.max(s,t);
        	zzz=Math.max(zz,x);
        	zzzz=Math.max(zzz,y);
        	z=Math.max(zzzz, 0);
        } b<0 && d<0 b<0 b 0 d<0 d 0 {
        	z=a*c;
        } z=a*c z a*c a c if(a>0 && c>0) {
        	z=b*d;
        }else if(b<0 && c>0) {
        	z=b*c;
        }else if(a>0 && d<0) {
        	z=a*d;
        } else {
        	s=a*c;
        	t=b*d;
        	x=a*d;
        	y=b*c;
        	zz=Math.max(s,t);
        	zzz=Math.max(zz,x);
        	zzzz=Math.max(zzz,y);
        	z=Math.max(zzzz, 0);
        } a>0 && c>0 a>0 a 0 c>0 c 0 {
        	z=b*d;
        } z=b*d z b*d b d if(b<0 && c>0) {
        	z=b*c;
        }else if(a>0 && d<0) {
        	z=a*d;
        } else {
        	s=a*c;
        	t=b*d;
        	x=a*d;
        	y=b*c;
        	zz=Math.max(s,t);
        	zzz=Math.max(zz,x);
        	zzzz=Math.max(zzz,y);
        	z=Math.max(zzzz, 0);
        } b<0 && c>0 b<0 b 0 c>0 c 0 {
        	z=b*c;
        } z=b*c z b*c b c if(a>0 && d<0) {
        	z=a*d;
        } else {
        	s=a*c;
        	t=b*d;
        	x=a*d;
        	y=b*c;
        	zz=Math.max(s,t);
        	zzz=Math.max(zz,x);
        	zzzz=Math.max(zzz,y);
        	z=Math.max(zzzz, 0);
        } a>0 && d<0 a>0 a 0 d<0 d 0 {
        	z=a*d;
        } z=a*d z a*d a d {
        	s=a*c;
        	t=b*d;
        	x=a*d;
        	y=b*c;
        	zz=Math.max(s,t);
        	zzz=Math.max(zz,x);
        	zzzz=Math.max(zzz,y);
        	z=Math.max(zzzz, 0);
        } s=a*c s a*c a c t=b*d t b*d b d x=a*d x a*d a d y=b*c y b*c b c zz=Math.max(s,t) zz Math.max(s,t) Math.max Math s t zzz=Math.max(zz,x) zzz Math.max(zz,x) Math.max Math zz x zzzz=Math.max(zzz,y) zzzz Math.max(zzz,y) Math.max Math zzz y z=Math.max(zzzz, 0) z Math.max(zzzz, 0) Math.max Math zzzz 0 System.out.println(z) System.out.println System.out System System.out z 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 x;
        long y;
        long s;
        long t;
        long z;
        long zz;
        long zzz;
        long zzzz;
        
        if(b<0 && d<0 ) {
        	z=a*c;
        } else if(a>0 && c>0) {
        	z=b*d;
        }else if(b<0 && c>0) {
        	z=b*c;
        }else if(a>0 && d<0) {
        	z=a*d;
        } else {
        	s=a*c;
        	t=b*d;
        	x=a*d;
        	y=b*c;
        	zz=Math.max(s,t);
        	zzz=Math.max(zz,x);
        	zzzz=Math.max(zzz,y);
        	z=Math.max(zzzz, 0);
        }
        
        System.out.println(z);
        

    }
} 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 x;
        long y;
        long s;
        long t;
        long z;
        long zz;
        long zzz;
        long zzzz;
        
        if(b<0 && d<0 ) {
        	z=a*c;
        } else if(a>0 && c>0) {
        	z=b*d;
        }else if(b<0 && c>0) {
        	z=b*c;
        }else if(a>0 && d<0) {
        	z=a*d;
        } else {
        	s=a*c;
        	t=b*d;
        	x=a*d;
        	y=b*c;
        	zz=Math.max(s,t);
        	zzz=Math.max(zz,x);
        	zzzz=Math.max(zzz,y);
        	z=Math.max(zzzz, 0);
        }
        
        System.out.println(z);
        

    }
} Main
import java.util.Scanner;
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 x;
        long y;
        long s;
        long t;
        long z;
        long zz;
        long zzz;
        long zzzz;
        
        if(b<0 && d<0 ) {
        	z=a*c;
        } else if(a>0 && c>0) {
        	z=b*d;
        }else if(b<0 && c>0) {
        	z=b*c;
        }else if(a>0 && d<0) {
        	z=a*d;
        } else {
        	s=a*c;
        	t=b*d;
        	x=a*d;
        	y=b*c;
        	zz=Math.max(s,t);
        	zzz=Math.max(zz,x);
        	zzzz=Math.max(zzz,y);
        	z=Math.max(zzzz, 0);
        }
        
        System.out.println(z);
        

    }
}
