let checkOverFlow (x: int64) (y: int64) =
    let a = x * y
    // a < 0L ならオーバーフローしている
    if a < 0L then true else a > 1000000000000000000L

let rec fb (x: int64) (xs: int64 list) =
    if List.contains 0L xs then
        0L
    else
        match xs with
        | y :: ys -> if checkOverFlow x y then -1L else fb (x * y) ys
        | [] -> x

stdin.ReadLine() |> ignore
stdin.ReadLine().Split(' ') |> Array.map int64 |> List.ofArray |> fb 1L |> printfn "%A"
