#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define N 1003
using namespace std;
struct data{
double p,q,k;
}a[N];
int n;
int cmp(data a,data b)
{
return a.k<b.k;
}
int main()
{
freopen("a.in","r",stdin);
scanf("%d",&n); double mx=0;
for (int i=1;i<=n;i++) {
scanf("%lf",&a[i].p);
a[i].q=1.0-a[i].p;
a[i].k=fabs(a[i].p-a[i].q);
mx=max(mx,a[i].p);
}
sort(a+1,a+n+1,cmp);
double f=a[1].p; double g=a[1].q; double ans=f;
for (int i=2;i<=n;i++) {
double ans1=f*a[i].q+g*a[i].p;
if (ans1<=ans) break;
f=ans1; g*=a[i].q; ans=f;
}
printf("%.9lf\n",max(mx,ans));
}