#include <bits/stdc++.h>
using namespace std;
long long n, m;
long long a[55];
long double dp[55][55][55][2];
long double comb(long long n, long long k) {
  long double res = 1;
  for (int i = 0, ggdem = k; i < ggdem; ++i) {
    res *= 1. * (n - i) / (i + 1);
  }
  return res;
}
long double f(long long x, long long y, long long z, long long b) {
  long double &r = dp[x][y][z][b];
  if (r >= 0) return r;
  if (x == m) {
    if (b || y > 0) {
      r = 0;
      return r;
    }
    r = 1;
    return r;
  }
  r = 0;
  for (int i = 0, ggdem = min(z * a[x], y) + 1; i < ggdem; ++i) {
    if ((i + a[x] - 1) / a[x] == z) {
      r += f(x + 1, y - i, z, 0) * pow(m - x - 1, y - i) * comb(y, i) /
           pow(m - x, y);
    } else {
      r += f(x + 1, y - i, z, b) * pow(m - x - 1, y - i) * comb(y, i) /
           pow(m - x, y);
    }
  }
  return r;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m;
  for (int i = 0, ggdem = m; i < ggdem; ++i) cin >> a[i];
  for (int i = 0, ggdem = 55; i < ggdem; ++i)
    for (int j = 0, ggdem = 55; j < ggdem; ++j)
      for (int k = 0, ggdem = 55; k < ggdem; ++k)
        for (int kk = 0, ggdem = 2; kk < ggdem; ++kk) dp[i][j][k][kk] = -1;
  long double res = 0;
  for (int i = 1, ggdem = n + 1; i < ggdem; ++i) res += f(0, n, i, 1) * i;
  cout << fixed << setprecision(20) << res;
  return 0;
}
