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.
n=int(input())
w=[float(k) for k in input().split()]
r=[int(j*(10**9)) for j in w]
w.sort()
r.sort()
z=w.pop()
if z>=0.5:
    print(z)
else:
    eta=1
    zxc=z
    r.pop()
    while w and z<0.5:
        z=z-z*w[-1]+(1-z)*w[-1]
        zxc=zxc-zxc*r[-1]+(1-zxc)*r[-1]
        w.pop()
        r.pop()
        eta+=1
    for j in range(eta):
        zxc/=10**9
    print(z)