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 cali(subset):
    z = [1-i for i in subset]
    ans = 0
    for i in range(len(subset)):
        ha = subset[i]
        for j in range(len(subset)):
            if i!=j:

                ha*=z[j]

        ans+=ha
    return ans
def solve():

    n = int(input())
    l = list(map(float,input().split()))

    l.sort()
    if l[-1]>=0.5:
        print(l[-1])
    else:
        ans = 0
        yo = -1
        ha = []
        for i in range(4):
            ha.append(l[yo])
            z = cali(ha)
            ans = max(ans,z)
            yo-=1
            if yo == -(n+1):
                break

        print(ans)











# t = int(input())
# for _ in range(t):

solve()



