#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<int> ve;
const int MAX = 51;
long long C[MAX][MAX];
void build() {
  for (int i = 0; i < MAX; ++i)
    for (int j = 0; j < MAX; ++j)
      C[i][j] = (j == 0) ? 1 : ((i == 0) ? 0 : C[i - 1][j - 1] + C[i - 1][j]);
}
double memo[MAX][MAX][MAX];
double solve(int i, int last, int mx) {
  if (i == m) {
    if (last != n) return 0;
    return mx;
  }
  double &ret = memo[i][last][mx];
  if (ret == ret) return ret;
  ret = 0;
  for (int j = 0; j <= n - last; j++) {
    ret += C[n - last][j] * 1LL *
           solve(i + 1, last + j, max(mx, (j / ve[i]) + (j % ve[i] != 0)));
  }
  return ret;
}
int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  build();
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    int x;
    cin >> x;
    ve.push_back(x);
  }
  memset(memo, -1, sizeof memo);
  cout << fixed << setprecision(20) << powl(1.0 / m, n) * solve(0, 0, 0)
       << endl;
  return 0;
}
