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 bestProb(v):

    v.sort()
    v_max = 0
    aux = 0
    prob = 0

    if (v[len(v) - 1] == 1):
        return 1
    
    v_max = v[len(v) - 1]

    for i in range (len(v)):
        aux = v[i]
        
        for j in range (len(v)):
            if (i != j):
                aux *= 1 - v[j]

        prob += aux
    
    if (prob > v_max):
        return prob
    
    else:
        return v_max


input()
v = input().split(" ")

for i in range (len(v)):
    v[i] = float(v[i])

print(bestProb(v))
	 		      								  			 		   	