#include <bits/stdc++.h>
using namespace std;
const int N = 55;
double mem[N][N][N];
int n, m, a[N];
long long C[N][N] = {0};
int main(void) {
  for (int i = 0; i < N; i++)
    for (int j = 0; j < N; j++)
      C[i][j] = (j == 0) ? 1 : ((i == 0) ? 0 : C[i - 1][j - 1] + C[i - 1][j]);
  scanf("%d %d", &n, &m);
  for (int i = 0; i < m; i++) {
    scanf("%d", a + i);
  }
  memset(mem, -1, sizeof mem);
  function<double(int, int, int)> dp = [&](int id, int st, int mx) {
    if (id == m) return st == 0 ? mx * 1.0 : 0.0;
    double &ret = mem[id][st][mx];
    if (ret == ret) return ret;
    ret = 0.0;
    double p = 1.0;
    for (int i = 0; i <= st; ++i) {
      int mxq = (i + a[id] - 1) / a[id];
      ret += C[st][i] * p * dp(id + 1, st - i, max(mx, mxq));
      p /= m;
    }
    return ret;
  };
  printf("%.20lf\n", dp(0, n, 0));
  return 0;
}
