#include <bits/stdc++.h>
const int oo = 2139063143;
const int N = 65;
const int mod = 1000000007;
using namespace std;
inline void sc(int &x) {
  x = 0;
  static int p;
  p = 1;
  static char c;
  c = getchar();
  while (!isdigit(c)) {
    if (c == '-') p = -1;
    c = getchar();
  }
  while (isdigit(c)) {
    x = (x << 1) + (x << 3) + (c - 48);
    c = getchar();
  }
  x *= p;
}
double ksm(double a, int b) {
  double ans = 1;
  while (b) {
    if (b & 1) ans = ans * a;
    a = a * a;
    b >>= 1;
  }
  return ans;
}
int a[N];
double f[N][N][N];
double C[N][N];
int main() {
  C[0][0] = 1;
  for (int i = 1; i <= 50; i++) {
    C[i][0] = 1;
    for (int j = 1; j <= 50; j++) C[i][j] = C[i - 1][j] + C[i - 1][j - 1];
  }
  int n, m;
  sc(n), sc(m);
  for (int i = 1; i <= m; i++) sc(a[i]);
  f[0][0][0] = 1;
  for (int i = 1; i <= m; i++)
    for (int j = 0; j <= n; j++)
      for (int k = 0; k <= n; k++) {
        int ma = min(k * a[i], j);
        for (int l = 0; l <= ma; l++) {
          if (k * a[i] - a[i] + 1 > l)
            f[i][j][k] +=
                f[i - 1][j - l][k] * ksm(i - 1, j - l) / ksm(i, j) * C[j][l];
          else
            for (int t = 0; t <= k; t++)
              f[i][j][k] +=
                  f[i - 1][j - l][t] * ksm(i - 1, j - l) / ksm(i, j) * C[j][l];
        }
      }
  double ans = 0;
  for (int k = 1; k <= n; k++) ans += f[m][n][k] * k;
  printf("%.12lf\n", ans);
  return 0;
}
