#include <bits/stdc++.h>
using namespace std;
const long long N = 128;
vector<double> FWHT(vector<double> P, bool inv) {
  for (long long len = 1; 2 * len <= N; len <<= 1)
    for (long long i = 0; i < N; i += (len << 1))
      for (long long j = 0; j < len; j++) {
        double a = P[i + j];
        double b = P[i + j + len];
        P[i + j] = (a + b);
        P[i + j + len] = (a - b);
        if (inv) P[i + j] /= 2, P[i + j + len] /= 2;
      }
  return P;
}
double power(double a, long long b) {
  double res = 1.00000;
  while (b) {
    if (b & 1) res *= a;
    a *= a;
    b >>= 1;
  }
  return res;
}
void solve() {
  long long n, x;
  cin >> n >> x;
  vector<double> poly(N, 0.0000);
  for (long long i = 0; i < x + 1; i++) cin >> poly[i];
  poly = FWHT(poly, 0);
  for (long long i = 0; i < N; i++) poly[i] = power(poly[i], n);
  poly = FWHT(poly, 1);
  cout << fixed << setprecision(7) << 1 - poly[0];
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  solve();
}
