#include <bits/stdc++.h>
using namespace std;
long double dp[60][60][60], dp1[60][60][60];
int n, m, H[60];
int len(int p, int w) { return (p / H[w] + ((p % H[w] != 0) ? 1 : 0)); }
long double C[60][60];
void init_c() {
  C[0][0] = 1;
  for (int i = 1; i < 60; ++i) {
    C[i][0] = C[i][i] = 1;
    for (int j = 1; j < i; ++j) C[i][j] = C[i - 1][j] + C[i - 1][j - 1];
  }
}
long double get(int pep, int rom, int max_l) {
  if (rom < 0 && pep == 0) return 1;
  if (rom < 0 || max_l < 0) return 0;
  return dp[pep][rom][max_l];
}
long double get1(int pep, int rom, int max_l) {
  if (rom >= m && pep == 0) return 1;
  if (rom >= m || max_l < 0) return 0;
  return dp1[pep][rom][max_l];
}
void init_dp() {
  int i, j, k, P;
  for (k = 0; k <= n; ++k)
    for (i = 0; i <= n; ++i)
      for (j = 0; j < m; ++j)
        for (P = 0; P <= i; ++P)
          if (len(P, j) <= k) dp[i][j][k] += C[i][P] * get(i - P, j - 1, k);
}
void init_dp1() {
  int i, j, k, P;
  for (k = 0; k <= n; ++k)
    for (i = 0; i <= n; ++i)
      for (j = m - 1; j >= 0; --j)
        for (P = 0; P <= i; ++P)
          if (len(P, j) <= k) dp1[i][j][k] += C[i][P] * get1(i - P, j + 1, k);
}
int main() {
  init_c();
  int i, j, k, l;
  cin >> n >> m;
  for (i = 0; i < m; ++i) cin >> H[i];
  init_dp();
  init_dp1();
  long double ans = 0;
  for (i = 0; i < m; ++i)
    for (j = 0; j <= n; ++j) {
      int exp = len(j, i), left = n - j;
      for (l = 0; l <= left; ++l) {
        long double E = (get(l, i - 1, exp) * get1(left - l, i + 1, exp - 1) *
                         C[n][j] * C[left][l]) /
                        get(n, m - 1, n);
        ans += E * exp;
      }
    }
  printf("%.12lf\n", (double)ans);
  return 0;
}
