Andrey needs one more problem to conduct a programming contest. He has *n* friends who are always willing to help. He can ask some of them to come up with a contest problem. Andrey knows one value for each of his fiends — the probability that this friend will come up with a problem if Andrey asks him.

Help Andrey choose people to ask. As he needs only one problem, Andrey is going to be really upset if no one comes up with a problem or if he gets more than one problem from his friends. You need to choose such a set of people that maximizes the chances of Andrey not getting upset.
The first line contains a single integer *n* (1 ≤ *n* ≤ 100) — the number of Andrey's friends. The second line contains *n* real numbers *p*<sub class="lower-index">*i*</sub> (0.0 ≤ *p*<sub class="lower-index">*i*</sub> ≤ 1.0) — the probability that the *i*-th friend can come up with a problem. The probabilities are given with at most 6 digits after decimal point.
def f(x, y):
    a1, a2 = x
    b1, b2  = y
    c1 = a1*b1
    c2 = a2*b1+a1*b2
    return [c1, c2]

def process(A):
    higher = 0
    lower = None
    for x in A:
        if x < 0.5:
            if lower is None:
                lower = [1-x, x]
            else:
                lower = f(lower, [1-x, x])
        else:
            higher = max(higher, x)
    return max(lower[1], higher)

n = int(input())
A = [float(x) for x in input().split()]
print(process(A))