#include <bits/stdc++.h>
using namespace std;
const long long mod = (long long)1e9 + 7;
const int inf = (int)1e9;
const long long INF = (long long)1e18;
const int base = 1000 * 1000 * 1000;
const int maxn = 2005;
const long double pi = acosl(-1.0);
const long double eps = 1e-9;
int size = 1;
vector<vector<long double>> multi(vector<vector<long double>> a,
                                  vector<vector<long double>> b) {
  vector<vector<long double>> res(size, vector<long double>(size));
  for (int i = 0; i < size; i++)
    for (int j = 0; j < size; j++)
      for (int k = 0; k < size; k++) {
        res[i][j] += a[i][k] * b[k][j];
      }
  return res;
}
vector<vector<long double>> power(int n, vector<vector<long double>> mat) {
  if (n == 1) return mat;
  vector<vector<long double>> res = power(n / 2, mat);
  res = multi(res, res);
  if (n % 2 == 1) res = multi(res, mat);
  return res;
}
void solve() {
  int n, x;
  cin >> n >> x;
  vector<long double> p(x + 1);
  for (int i = 0; i < x + 1; i++) cin >> p[i];
  while (size <= x) size <<= 1;
  vector<vector<long double>> mat(size, vector<long double>(size));
  for (int i = 0; i < size; i++)
    for (int j = 0; j < x + 1; j++) {
      mat[i][i ^ j] += p[j];
    }
  mat = power(n, mat);
  long double ans = 0;
  cout.precision(12);
  cout << fixed << 1 - mat[0][0];
}
int main() {
  solve();
  return 0;
}
