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.
from decimal import Decimal
def lol(x1,x2):
    y1=abs(x1-1)
    y2=abs(x2-1)
    if y1>y2:
        return x2
    return x1
d=[0]*123
for i in range(123):
    d[i]=[Decimal('0.0000000000000000000000000')]*123
n=int(input())
a=[0]+[Decimal('0.00000000000000000000000000')+Decimal(x) for x in input().split()]
    
for i in range(1,n+1):
    for j in range(1,i+1):
          d[i][j]=lol(d[i-1][j],d[i-1][j-1]*(1-a[i])+(1-d[i-1][j-1])*a[i])
ans=Decimal('-693.00000000000000000000000000000')
for j in range(1,n+1):
    ans=lol(ans,d[n][j]);
print(ans)