#include <bits/stdc++.h>
using namespace std;
int a[51], vis[51][51][51][2], n, m;
double dp[51][51][51][2], C[51][51];
double pro(double x, double T, double M) {
  return pow(1.0 / M, x) * pow((M - 1.0) / M, T - x) * C[(int)T][(int)x];
}
double rec(int idx, int maxlen, int rem, int satis) {
  double &ret = dp[idx][maxlen][rem][satis];
  if (vis[idx][maxlen][rem][satis]) return ret;
  vis[idx][maxlen][rem][satis] = 1;
  if (idx == m) {
    if (rem == 0 and satis)
      return ret = 1.0;
    else
      return ret = 0.0;
  }
  double prob = 1.0;
  ret = 0.0;
  for (int here = 0; here <= rem; here++) {
    int queuelen = (here + a[idx] - 1) / a[idx];
    if (queuelen > maxlen) break;
    ;
    prob = pro(here, rem, m - idx);
    ret +=
        prob * rec(idx + 1, maxlen, rem - here, satis or (queuelen == maxlen));
  }
  return ret;
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < m; i++) scanf("%d", &a[i]);
  for (int i = 0; i < 51; i++) {
    C[i][0] = 1.0;
    for (int j = 1; j < i + 1; j++) C[i][j] = C[i - 1][j] + C[i - 1][j - 1];
  }
  double ans = 0.0;
  for (int l = 1; l <= n; l++) {
    ans += 1.0 * l * rec(0, l, n, 0);
  }
  printf("%.15lf\n", ans);
  return 0;
}
