#include <bits/stdc++.h>
using namespace std;
const long long int mod = 1e9 + 7;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
long long int pwr(long long int a, long long int b) {
  long long int ans = 1;
  while (b) {
    if (b & 1) ans = (ans * a) % mod;
    a = (a * a) % mod;
    b >>= 1;
  }
  return ans;
}
const long long int N = 55;
long long int ncr[N][N];
long double dp[N][N][N], pw[N];
long long int a[N];
void solve() {
  for (long long int i = 0; i <= N - 1; i++) {
    ncr[i][0] = 1;
    for (long long int j = 1; j <= i; j++) {
      ncr[i][j] = ncr[i - 1][j] + ncr[i - 1][j - 1];
    }
  }
  long long int n, m;
  cin >> n >> m;
  for (long long int i = 1; i <= m; i++) cin >> a[i];
  pw[0] = 1;
  for (long long int i = 1; i <= N - 1; i++) pw[i] = (pw[i - 1] * (1.0 / m));
  for (long long int i = 0; i <= n; i++) {
    for (long long int j = 0; j <= m; j++) {
      for (long long int k = 0; k <= n; k++) {
        for (long long int l = 0; l <= i; l++) {
          if (j == 0) {
            if (i == 0) dp[i][j][k] = 1;
          } else if ((l + a[j] - 1) / a[j] <= k)
            dp[i][j][k] += ncr[i][l] * pw[l] * dp[i - l][j - 1][k];
        }
      }
    }
  }
  long double ans = 0;
  for (long long int i = 1; i <= n; i++) {
    ans += (dp[n][m][i] - dp[n][m][i - 1]) * i;
  }
  cout << setprecision(12) << fixed << ans;
}
signed main() {
  ios ::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  clock_t clk = clock();
  long long int t;
  t = 1;
  while (t--) {
    solve();
  }
  cerr << (double)(clock() - clk) / CLOCKS_PER_SEC;
  return 0;
}
