#include <bits/stdc++.h>
using namespace std;
int a[100];
int n, m;
double power(double a, int b) {
  double res = 1;
  while (b) {
    if (b & 1) res = res * a;
    a = a * a;
    b /= 2;
  }
  return res;
}
double choose(int n, int k) {
  if (k > n) return 0;
  k = min(k, n - k);
  double res = 1;
  int top = n;
  int bot = 1;
  for (int i = 0; i < k; i++, top--, bot++) {
    res *= (1.0 * top / bot);
  }
  return res;
}
double total;
double dp[55][55][55];
int vis[55][55][55];
double solve(int rem, int i, int mx) {
  if (i == m) return (!rem) * 1.0 / total;
  double &ret = dp[rem][i][mx];
  if (vis[rem][i][mx]) return ret;
  vis[rem][i][mx] = 1;
  ret = 0;
  for (int take = 0; take <= rem; take++) {
    int cur_mx = ceil(1.0 * take / a[i]);
    if (cur_mx > mx) break;
    ret += choose(rem, take) * solve(rem - take, i + 1, mx);
  }
  return ret;
}
int main() {
  cin.tie(0);
  cin.sync_with_stdio(0);
  cin >> n >> m;
  for (int i = 0; i < m; i++) cin >> a[i];
  double ans = 0;
  total = power(m, n);
  for (int len = 1; len <= n; len++) {
    ans += len * (solve(n, 0, len) - solve(n, 0, len - 1));
  }
  cout << fixed << setprecision(15) << ans;
}
