#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<bool> vb;
typedef vector<vb> vvb;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef vector<char> vc;
typedef vector<vc> vvc ;
typedef vector<string> vs;
typedef vector<pair<ll, ll> > vp;
typedef pair<ll, ll> pl;
#define endl "\n"
#define pb push_back
#define F first
#define S second
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define sz(a) int(a.size())
const ll mod = 1e9+7;
ll n;
long double dp[3001][3001];
vector<long double> v;
long double f(ll x, ll o){
if(x>=n) {
if(o>=(n+1)/2){
return 1;
} else {
return 0;
}
}
if(dp[x][o]!=-1)
return dp[x][o];
dp[x][o]=v[x] * f(x+1, o+1) + (1-v[x]) * f(x+1, o);
return dp[x][o];
}
void solve(){
long double aux;
cin >> n;
for(ll i=0; i<n; i++){
cin >> aux;
v.pb(aux);
}
for(ll i=0; i<n; i++){
for(ll j=0; j<n; j++){
dp[i][j]=-1;
}
}
std::cout << std::fixed << std::setprecision(10);
cout << f(0, 0) << endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int tt=1;
// cin >> tt;
while(tt--){
solve();
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgdmVjdG9yPGJvb2w+IHZiOwp0eXBlZGVmIHZlY3Rvcjx2Yj4gdnZiOwp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwp0eXBlZGVmIHZlY3Rvcjx2aT4gdnZpOwp0eXBlZGVmIHZlY3RvcjxsbD4gdmw7CnR5cGVkZWYgdmVjdG9yPHZsPiB2dmw7CnR5cGVkZWYgdmVjdG9yPGNoYXI+IHZjOwp0eXBlZGVmIHZlY3Rvcjx2Yz4gdnZjIDsKdHlwZWRlZiB2ZWN0b3I8c3RyaW5nPiB2czsKdHlwZWRlZiB2ZWN0b3I8cGFpcjxsbCwgbGw+ID4gdnA7CnR5cGVkZWYgcGFpcjxsbCwgbGw+IHBsOwogCiNkZWZpbmUgZW5kbCAiXG4iCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgRiBmaXJzdAojZGVmaW5lIFMgc2Vjb25kCiNkZWZpbmUgYWxsKHYpIHYuYmVnaW4oKSwgdi5lbmQoKQojZGVmaW5lIHJhbGwodikgdi5yYmVnaW4oKSwgdi5yZW5kKCkKI2RlZmluZSBzeihhKSBpbnQoYS5zaXplKCkpCmNvbnN0IGxsIG1vZCA9IDFlOSs3OwoKbGwgbjsKbG9uZyBkb3VibGUgZHBbMzAwMV1bMzAwMV07CnZlY3Rvcjxsb25nIGRvdWJsZT4gdjsKCmxvbmcgZG91YmxlIGYobGwgeCwgbGwgbyl7CQoJaWYoeD49bikgewoJCWlmKG8+PShuKzEpLzIpewoJCQlyZXR1cm4gMTsKCQkJCgkJfSBlbHNlIHsKCQkJcmV0dXJuIDA7CgkJfQoJfQoJCglpZihkcFt4XVtvXSE9LTEpCgkJcmV0dXJuIGRwW3hdW29dOwoJCQoJZHBbeF1bb109dlt4XSAqIGYoeCsxLCBvKzEpICsgKDEtdlt4XSkgKiBmKHgrMSwgbyk7CgkKCXJldHVybiBkcFt4XVtvXTsKfQoKdm9pZCBzb2x2ZSgpewoJbG9uZyBkb3VibGUgYXV4OwoJY2luID4+IG47Cglmb3IobGwgaT0wOyBpPG47IGkrKyl7CgkJY2luID4+IGF1eDsKCQl2LnBiKGF1eCk7Cgl9CgkKCWZvcihsbCBpPTA7IGk8bjsgaSsrKXsKCQlmb3IobGwgaj0wOyBqPG47IGorKyl7CgkJCWRwW2ldW2pdPS0xOwoJCX0KCX0KCQoJc3RkOjpjb3V0IDw8IHN0ZDo6Zml4ZWQgPDwgc3RkOjpzZXRwcmVjaXNpb24oMTApOwoJY291dCA8PCBmKDAsIDApIDw8IGVuZGw7CgkKfQoKaW50IG1haW4oKXsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICAKICAgIGludCB0dD0xOyAKCiAgICAvLyBjaW4gPj4gdHQ7CgogICAgd2hpbGUodHQtLSl7CiAgICAgICAgc29sdmUoKTsKICAgIH0KfQ==