def input_n
  gets.to_i               # 単一整数
end

def input_s
  gets.chomp              # 文字列。chompを付けないと改行文字がついてくる
end

def input_a
  gets.split.map(&:to_i)  # スペースで区切られた複数の整数
end

def input_o(num)
  num.times.map { gets.to_i }  # 縦に並んだ複数の整数。たまにある
end

def output_f(num)
  puts sprintf("%.12f", num)
end

a, b, c, d = input_a

max = -1 * 10 ** 10
ans = []
ans.push(a * c)
ans.push(a * d)
ans.push(b * c)
ans.push(b * d)
puts ans.max
# (a..b).each do |i|
#   (c..d).each do |j|
#     if max < i * j
#       max = i * j
#     end
#   end
# end
# puts max
