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.
#   ==========     //\\       //||     ||====//||
#       ||        //  \\        ||     ||   // ||
#       ||       //====\\       ||     ||  //  ||
#       ||      //      \\      ||     || //   ||
#   ========== //        \\  ========  ||//====|| 
#  code

def main():
    n = int(input())
    a = list(map(float, input().split()))
    a.sort(reverse = True)
    ans = 0
    for i, v in enumerate(a):
        tempans = 0
        for j, v1 in enumerate(a[:i + 1]):
            p = 1
            for k, v3 in enumerate(a[:i + 1]):
                if j == k:
                    p *= v3
                else:
                    p *= (1 - v3)
            tempans += p
        ans = max(ans, tempans)
    print(ans)
    return

if __name__ == "__main__":
    main()