Problem:
Score : 200 points

Problem Statement

Given are integers a,b,c and d.
If x and y are integers and a \leq x \leq b and c\leq y \leq d hold, what is the maximum possible value of x \times y?

Constraints

-10^9 \leq a \leq b \leq 10^9

-10^9 \leq c \leq d \leq 10^9

All values in input are integers.

Input

Input is given from Standard Input in the following format:

a b c d

Output

Print the answer.

Sample Input 1

1 2 1 1

Sample Output 1

2

If x = 1 and y = 1 then x \times y = 1.
If x = 2 and y = 1 then x \times y = 2.
Therefore, the answer is 2.

Sample Input 2

3 5 -4 -2

Sample Output 2

-6

The answer can be negative.

Sample Input 3

-1000000000 0 -1000000000 0

Sample Output 3

1000000000000000000

Solution in Pascal (FPC 3.0.4) (judge verdict: Wrong Answer)

Program AtCoderBeginnerContest178;

uses
sysutils,strutils, math;

var

a,b,c,d,x,temp,t2 :int64;
s:string;
r:real;



begin

read(a);
read(b);
read(c);
read(d);


IF (b = 0) AND (d = 0) THEN
begin
	x:= a * c;
	writeln(x);
	exit;
end;

IF (a > 0) AND (c > 0) THEN//if all positive
begin
	x:= b * d;
	writeln(x);
	exit;
end;

IF (b < 0) AND (d < 0) THEN//if all negative
begin
	x:= a * c;
	writeln(x);
	exit;
end;

IF (a < 0) AND (b < 0) AND (c > 0) AND (d > 0) THEN//if both x range negative
begin
	temp:= max(a,b);
	x:= temp * min(c,d);
	writeln(x);
	exit;
end;

IF (a > 0) AND (b > 0) AND (c < 0) AND (d < 0) THEN//if both y range negative
begin
	temp:= max(c,d);
	x:= temp * min(a,b);
	writeln(x);
	exit;
end;

IF (a < 0) OR (b < 0) THEN
begin
	temp:= max(a,b);
end;


IF (c < 0) OR (d < 0) THEN
begin
	t2:= max(c,d);
end;

writeln(x);




//program 1

{readln(x);

IF (x = 0) THEN

begin
	writeln('1');
end;

IF (x = 1) THEN

begin
	writeln('0');
end;}

end.