#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<string> #include<queue> #include<cmath> #include<memory.h> using namespace std; #define inf 1<<20 int base[20]; double p[20],dp[inf]; void clear() { memset(dp,0.0,sizeof(dp)); memset(p,0.0,sizeof(p)); int i; for(i=0;i<20;i++) base[i]=1<<i; } int main() { int n,i,maxn,j; double sum,t; while(cin>>n) { clear(); for(i=0;i<n;i++) cin>>p[i]; maxn=1<<n; for(i=1;i<maxn;i++) { sum=t=0.0; for(j=0;j<n;j++) { if(i & base[j]) { t+=p[j]*dp[i-base[j]]; sum+=p[j]; } } dp[i]=(t+1)/sum; } printf("%.5lf\n",dp[(1<<n)-1]); } return 0; }