#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:134217728")
using namespace std;
int n, m;
int a[55];
long double C[55][55];
long double dp[55][55][55];
long double pw[55];
long double go(int q, int pos, int have) {
  if (pos == m) {
    if (have > 0) return 0.0;
    return q;
  }
  long double& res = dp[q][pos][have];
  if (res != -1.0) return res;
  res = 0.0;
  for (int i = 0; i <= have; ++i)
    res += C[have][i] / pw[i] *
           go(max(q, (i + a[pos] - 1) / a[pos]), pos + 1, have - i);
  return res;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < m; ++i) scanf("%d", &a[i]);
  pw[0] = 1.0;
  for (int i = 1; i <= n; ++i) pw[i] = pw[i - 1] * m;
  for (int i = 0; i <= n; ++i) {
    C[i][i] = 1;
    C[i][0] = 1;
  }
  for (int i = 2; i <= n; ++i)
    for (int j = 1; j < i; ++j) C[i][j] = C[i - 1][j] + C[i - 1][j - 1];
  for (int i = 0; i < 55; ++i)
    for (int j = 0; j < 55; ++j)
      for (int k = 0; k < 55; ++k) dp[i][j][k] = -1.0;
  cout.precision(20);
  cout << fixed << go(0, 0, n) << endl;
  return 0;
}
