#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f7f7f7f;
const int MAXN = 100005;
const double eps = 1e-10;
double dp[135], temp[135], tt[135];
double f[135];
double fun(int n, int x) {
  int k = 1;
  for (int i = 0; i <= x; i++) dp[i] = f[i];
  for (int i = 0; i <= x; i++) temp[i] = f[i];
  while (n) {
    if (n & 1) {
      for (int i = 0; i <= 128; i++) {
        tt[i] = temp[i];
        temp[i] = 0.0;
      }
      for (int i = 0; i <= 128; i++)
        for (int j = 0; j <= 128; j++) {
          temp[i ^ j] += tt[i] * dp[j];
        }
    }
    for (int i = 0; i <= 128; i++) {
      tt[i] = dp[i];
      dp[i] = 0.0;
    }
    for (int i = 0; i <= 128; i++)
      for (int j = 0; j <= 128; j++) {
        dp[i ^ j] += tt[i] * tt[j];
      }
    n >>= 1;
  }
  return temp[0];
}
int main() {
  int n, x;
  int i;
  scanf("%d%d", &n, &x);
  for (i = 0; i <= 130; i++) {
    dp[i] = f[i] = 0.0;
  }
  for (i = 0; i <= x; i++) {
    scanf("%lf", &f[i]);
  }
  double ans = fun(n - 1, x);
  printf("%lf\n", 1.0 - ans);
  return 0;
}
