#include <bits/stdc++.h>
using namespace std;
inline int dcmp(double a, double b) {
  return fabs(a - b) < (1e-9) ? 0 : a < b ? -1 : +1;
}
const int N = 50 + 1;
long long C[N][N];
double memo[N][N][N];
int b[N];
int n, m;
void pascal() {
  C[0][0] = 1;
  for (auto i = 0; i < N; ++i)
    for (auto j = 0; j < i + 1; ++j)
      C[i][j] = j == 0 || j == i ? 1 : C[i - 1][j] + C[i - 1][j - 1];
}
double f(int i, int maxq, int remn) {
  if (i == m) return remn == 0 ? maxq : 0;
  double &ret = memo[i][maxq][remn];
  if (ret != -1) return ret;
  ret = 0;
  double rp = 1;
  for (auto k = 0; k < remn + 1; ++k) {
    ret +=
        C[remn][k] * f(i + 1, max(maxq, (k + b[i] - 1) / b[i]), remn - k) / rp;
    rp *= m;
  }
  return ret;
}
int main() {
  pascal();
  for (auto i = 0; i < N; ++i)
    for (auto j = 0; j < N; ++j)
      for (auto k = 0; k < N; ++k) memo[i][j][k] = -1;
  scanf("%d %d", &n, &m);
  for (auto i = 0; i < m; ++i) scanf("%d", b + i);
  printf("%.18lf", f(0, 0, n));
  return 0;
}
