#include <bits/stdc++.h>
using namespace std;
int n, m;
int a[50];
double dp[51][51][51];
bool viz[51][51][51];
long long choose[51][51];
double go(int i, int j, int k) {
  if (i == m - 1) return j <= a[i] * k;
  double &d = dp[i][j][k];
  if (viz[i][j][k]) return d;
  double res = 0;
  for (int l = 0; l <= min(j, a[i] * k); l++) {
    res += choose[j][l] * pow(m - i - 1, j - l) / pow(m - i, j) *
           go(i + 1, j - l, k);
  }
  viz[i][j][k] = 1;
  return d = res;
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < m; i++) cin >> a[i];
  for (int i = 0; i <= n; i++) choose[i][0] = 1;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= i; j++)
      choose[i][j] = choose[i - 1][j - 1] + choose[i - 1][j];
  double r = 0;
  for (int i = 1; i <= n; i++) {
    double p = go(0, n, i) - go(0, n, i - 1);
    r += i * p;
  }
  printf("%.9lf\n", r);
}
