#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define nmax 3001
double p[nmax] , p1[nmax];
ll n;
bool visited[nmax][nmax];
double dp[nmax][3005];
double tinh(int index , int ch){
if (index == n + 1){
int ct = n- ch;
return(ch > ct and ch <= n)? 1.0 : 0.0;
}
if (visited[index][ch]) return dp[index][ch];
visited[index][ch] = true;
double ans = 0;
ans+= p[index] * tinh(index + 1 , ch + 1);
ans+= p1[index] *tinh(index + 1 , ch);
return dp[index][ch] = ans;
}
void solve(){
memset(dp , -1 , sizeof(dp));
cin >> n;
for (int i = 1 ; i <= n ; i++){
cin >> p[i];
p1[i] = 1.0 - p[i];
}
cout << fixed << setprecision(10) << tinh(1 , 0);
}
int main(){
solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBubWF4IDMwMDEKZG91YmxlIHBbbm1heF0gLCBwMVtubWF4XTsKbGwgbjsKYm9vbCB2aXNpdGVkW25tYXhdW25tYXhdOwpkb3VibGUgZHBbbm1heF1bMzAwNV07CmRvdWJsZSB0aW5oKGludCBpbmRleCAsIGludCBjaCl7CiAgICBpZiAoaW5kZXggPT0gbiArIDEpewogICAgICAgIGludCBjdCA9ICBuLSBjaDsKICAgICAgICByZXR1cm4oY2ggPiBjdCBhbmQgY2ggPD0gbik/IDEuMCA6IDAuMDsKICAgIH0KICAgIGlmICh2aXNpdGVkW2luZGV4XVtjaF0pIHJldHVybiBkcFtpbmRleF1bY2hdOwogICAgdmlzaXRlZFtpbmRleF1bY2hdID0gdHJ1ZTsKICAgIGRvdWJsZSBhbnMgPSAwOwogICAgYW5zKz0gcFtpbmRleF0gKiB0aW5oKGluZGV4ICsgMSAsIGNoICsgMSk7CiAgICBhbnMrPSBwMVtpbmRleF0gKnRpbmgoaW5kZXggKyAxICwgY2gpOwogICAgcmV0dXJuIGRwW2luZGV4XVtjaF0gPSBhbnM7Cn0Kdm9pZCBzb2x2ZSgpewogICAgbWVtc2V0KGRwICwgLTEgLCBzaXplb2YoZHApKTsKICAgIGNpbiA+PiBuOwogICAgZm9yIChpbnQgaSA9IDEgOyBpIDw9IG4gOyBpKyspewogICAgICAgIGNpbiA+PiBwW2ldOwogICAgICAgIHAxW2ldID0gMS4wIC0gcFtpXTsKICAgIH0KICAgIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDEwKSA8PCB0aW5oKDEgLCAwKTsKfQppbnQgbWFpbigpewogICAgc29sdmUoKTsKfQo=