#include <bits/stdc++.h>
#pragma GCC optimize("3", "Ofast", "inline")
using namespace std;
template <class T>
inline void read(T &x) {
  x = 0;
  T f = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (isdigit(ch)) x = x * 10 + ch - 48, ch = getchar();
  x *= f;
}
int n, m, a[55], sum;
double ex[55], f[55][55], ans;
int main() {
  read(m), read(n);
  for (int i = 1; i <= n; ++i) read(a[i]), sum += a[i];
  for (int k = 1; k <= m; ++k) {
    memset(f, 0, sizeof f);
    f[0][0] = 1;
    for (int i = 0; i < n; ++i)
      for (int j = 0; j <= m; ++j) {
        double tmp = 1;
        for (int p = 0; p <= min(a[i + 1] * k, m - j);
             tmp *= (double(j + p + 1) / double(p + 1) / double(n)), ++p)
          f[i + 1][j + p] += f[i][j] * tmp;
      }
    ex[k] = f[n][m];
  }
  for (int i = m; i; --i) ans += i * (ex[i] -= ex[i - 1]);
  printf("%.15f\n", ans);
  return ~~(0 ^ 0 ^ 0);
}
