#include <bits/stdc++.h>
using namespace std;
const long long OO = 1e8;
const double EPS = (1e-7);
int dcmp(double x, double y) { return fabs(x - y) <= EPS ? 0 : x < y ? -1 : 1; }
const int MAX = 101;
int roomwWsh[MAX];
int n, m;
long long C[MAX][MAX] = {0};
void build_nCk() {
  for (int i = 0; i < (int)(MAX); ++i)
    for (int j = 0; j < (int)(MAX); ++j)
      C[i][j] = (j == 0) ? 1 : ((i == 0) ? 0 : C[i - 1][j - 1] + C[i - 1][j]);
}
double mem[MAX][MAX][MAX];
double expected(int r, int s, int mxSoFar) {
  if (r == m) return s == 0 ? mxSoFar : 0;
  double &ret = mem[r][s][mxSoFar];
  if (ret == ret) return ret;
  ret = 0;
  double p = 1.0;
  for (int ss = 0; ss < (int)(s + 1); ++ss) {
    int largestQueue = (ss + roomwWsh[r] - 1) / roomwWsh[r];
    ret += C[s][ss] * p * expected(r + 1, s - ss, max(mxSoFar, largestQueue));
    p /= m;
  }
  return ret;
}
int main() {
  build_nCk();
  cin >> n >> m;
  for (int i = 0; i < (int)(m); ++i) cin >> roomwWsh[i];
  memset(mem, -1, sizeof(mem));
  printf("%.10lf\n", expected(0, n, 0));
  return 0;
}
