#include <bits/stdc++.h>
using namespace std;
double f(long long a, long long r) {
  double x = 1.0 / a;
  double res = 1.0;
  while (r) {
    if (r % 2) res = res * x;
    r /= 2, x *= x;
  }
  return res;
}
long long C[100][100];
long long a[100];
double dp[60][60][60];
int main() {
  long long n, m;
  cin >> n >> m;
  for (long long i = 0; i <= m - 1; i++) cin >> a[i];
  memset(dp, 0, sizeof(dp));
  dp[0][0][0] = 1.0;
  for (long long i = 1; i <= n; i++) dp[0][0][i] = 1.0;
  memset(C, 0, sizeof(C));
  C[0][0] = 1;
  for (long long i = 1; i <= n; i++) {
    for (long long j = 1; j <= i; j++) {
      C[i][j] = C[i - 1][j - 1] + C[i - 1][j];
    }
    C[i][0] = 1;
  }
  for (long long i = 1; i <= m; i++) {
    for (long long j = 0; j <= n; j++) {
      for (long long k = 0; k <= n; k++) {
        long long x = min(j, k * a[i - 1]);
        for (long long l = 0; l <= x; l++) {
          double z = dp[i - 1][j - l][k] * C[n + l - j][l] * f(m, l);
          dp[i][j][k] += z;
        }
      }
    }
  }
  double ans = 0.0;
  for (long long i = 1; i <= n; i++) {
    double z = (dp[m][n][i] - dp[m][n][i - 1]) * i;
    ans += z;
  }
  cout << fixed << setprecision(10) << ans << "\n";
}
