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 maximize_probability(n, probabilities):
    probabilities.sort()  # Sort probabilities in non-decreasing order
    max_prob = 0.0

    # Iterate through the possible number of friends
    for i in range(n):
        prob = 1.0
        for j in range(i):
            prob *= (1 - probabilities[j])
        prob *= probabilities[i]  # Probability of exactly one friend providing a problem
        max_prob = max(max_prob, prob)

    return max_prob

# Read input
n = int(input())
probabilities = list(map(float, input().split()))

# Calculate the maximum probability
result = maximize_probability(n, probabilities)
print('{:.9f}'.format(result))  # Print with up to 9 decimal places

# Alternatively, you can use this for printing the result:
# print('%.9f' % result)
