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.
import sys
n = int(input()) 
index = [i for i in range(n)]
tmp = list(map(float, sys.stdin.readline().split()))
ans = []
maxP = 0
while len(index):
    j = 0
    ma = 0
    for k in index:
        if tmp[k] >= ma:
            ma = tmp[k]
            j = k
    index.remove(j)
    ans.append(tmp[j])
    tp = 0
    for i in range(len(ans)):
        q  = ans[i]
        for k in range(len(ans)):
            if i != k:
                q *= 1 - ans[k]
        tp += q
    if tp > maxP:
        maxP = tp
    else:
        ans.remove(tmp[j])

print ("{0:.9f}".format(maxP))

