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 main():
    count_of_friends = int(raw_input())
    list_of_friends_chances = map(float, raw_input().split(' '))
    list_of_friends_chances.sort()
    max_number = max(list_of_friends_chances)
    list_of_lists = []
    for t in range(0, count_of_friends):
        list_last = []
        for i in range(t, count_of_friends):
            var_temp = list_of_friends_chances[i]
            for j in range(t, count_of_friends):
                if i != j:
                    var_temp *= 1 - list_of_friends_chances[j]
            list_last.append(var_temp)
        list_of_lists.append(sum(list_last))
    max_sum_of_lists = max(list_of_lists)
    if max_sum_of_lists > max_number:
        print(max_sum_of_lists)
    else:
        print(max_number)

if __name__ == "__main__":
    main()