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())
p = list(map(float,input().split()))
p.sort(reverse=True)
cnt,flag = 0,0
arr = []
for i in p:
    if i==1:
        flag = 1
        break
    elif i:
        arr.append(i)
        cnt += 1
    else:
        break
if flag:
    print(1)
elif cnt:
    maxi = arr[0]
    n = cnt
    for i in range(2,n+1):
        query = p[:i]
        s = 0
        m = 1
        for j in query:
            m *= (1-j)
        for j in query:
            x = m*j/(1-j)
            s += x
        if s<=1:
            if maxi<s:
                maxi = s
        else:
            break
    print(maxi)
else:
    print(0)