#include <bits/stdc++.h>
using namespace std;
const int MAX = 51;
int n, m;
vector<int> ve;
long long C[MAX][MAX];
double memo[MAX][MAX][MAX];
double f(int i, int j, int mx) {
  if (i == m) return (j == 0 ? mx : 0);
  double &ret = memo[i][j][mx];
  if (ret == ret) return ret;
  ret = 0;
  double p = 1.0;
  for (int k = 0; k <= j; k++) {
    int sol = (k + ve[i] - 1) / ve[i];
    ret += C[j][k] * p * f(i + 1, j - k, max(mx, sol));
    p /= m;
  }
  return ret;
}
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]);
}
int main() {
  ios::sync_with_stdio(false);
  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(16) << f(0, n, 0) << endl;
  return 0;
}
