#include <bits/stdc++.h>
using namespace std;
int mod = pow(10, 9) + 7;
int fastExpo(long long a, long long n, int mod) {
  a %= mod;
  if (n == 2) return a * a % mod;
  if (n == 1) return a;
  if (n & 1)
    return a * fastExpo(fastExpo(a, n >> 1, mod), 2, mod) % mod;
  else
    return fastExpo(fastExpo(a, n >> 1, mod), 2, mod);
}
inline void add(vector<vector<int> > &a, vector<vector<int> > &b, int mod) {
  for (int i = 0; i < a.size(); i++)
    for (int j = 0; j < a[0].size(); j++) b[i][j] = (b[i][j] + a[i][j]) % mod;
}
void multiply(vector<vector<int> > &a, vector<vector<int> > &b, int mod,
              vector<vector<int> > &temp) {
  assert(a[0].size() == b.size());
  int i, j;
  for (i = 0; i < a.size(); i++) {
    for (j = 0; j < b[0].size(); j++) {
      temp[i][j] = 0;
      for (int p = 0; p < a[0].size(); p++) {
        temp[i][j] = (temp[i][j] + 1LL * a[i][p] * b[p][j]) % mod;
      }
    }
  }
}
void MatExpo(vector<vector<int> > &arr, int power, int mod) {
  int i, j, k;
  vector<vector<int> > temp, temp2, temp3;
  vector<int> init(arr[0].size());
  for (i = 0; i < arr.size(); i++) {
    temp.push_back(init);
  }
  temp3 = temp;
  temp2 = temp;
  for (i = 0; i < arr.size(); i++) temp3[i][i] = 1;
  while (power > 0) {
    if (power & 1) {
      multiply(arr, temp3, mod, temp);
      swap(temp3, temp);
    }
    multiply(arr, arr, mod, temp2);
    swap(arr, temp2);
    power >>= 1;
  }
  swap(arr, temp3);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
  srand(time(NULL));
  int n;
  cin >> n;
  long double arr[n];
  long double p = 1, ans = 0;
  int i, j, k;
  for (i = 0; i < n; i++) {
    cin >> arr[i];
    ans += arr[i] * p;
    p = arr[i] * p + 1 + arr[i];
  }
  cout << fixed << setprecision(10) << ans << endl;
  return 0;
}
