#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void Read(T &x) {
  int f = 1;
  char t = getchar();
  while (t < '0' || t > '9') {
    if (t == '-') f = -1;
    t = getchar();
  }
  x = 0;
  while (t >= '0' && t <= '9') {
    x = x * 10 + t - '0';
    t = getchar();
  }
  x *= f;
}
const int maxn = 55;
int n, m, a[maxn];
long double f[maxn][maxn][maxn], c[maxn][maxn];
void input() {
  Read(n), Read(m);
  for (register int i = 1; i <= m; i++) Read(a[i]);
}
void solve() {
  double all = 0, ans = 0;
  c[0][0] = 1, f[0][0][0] = 1;
  for (register int i = 1; i <= n; i++) {
    c[i][0] = 1;
    for (register int j = 1; j <= i; j++) {
      c[i][j] = c[i - 1][j - 1] + c[i - 1][j];
    }
  }
  for (register int i = 0; i < m; i++) {
    for (register int j = 0; j <= n; j++) {
      for (register int k = 0; k <= j; k++) {
        if (f[i][j][k] > 0) {
          for (register int p = 0; p + j <= n; p++) {
            int nl = ceil(p * 1.0 / a[i + 1]);
            f[i + 1][j + p][max(nl, k)] += f[i][j][k] * c[j + p][p];
          }
        }
      }
    }
  }
  for (register int i = 0; i <= n; i++) all += f[m][n][i];
  for (register int i = 0; i <= n; i++)
    ans += (double)(f[m][n][i] * 1.0 / all) * i;
  printf("%.20lf\n", ans);
}
int main() {
  input();
  solve();
  return 0;
}
