#include <bits/stdc++.h>
double bcs[51][51];
double achooseb(int a, int b) {
  if (!(0 <= a && a <= 50 & 0 <= b && b <= 50)) return 0;
  if (b < 0) return 0;
  if (bcs[a][b] >= 0) return bcs[a][b];
  if (b > a / 2) b = a - b;
  double res = 1.0;
  int i;
  for (i = 0; i < b; i++) {
    res *= (double)(a - i) / (b - i);
  }
  return bcs[a][b] = bcs[a][a - b] = res;
}
int main() {
  int n, m;
  scanf("%d %d", &n, &m);
  int a[m];
  int i, j, k, l;
  for (i = 0; i < m; i++) scanf("%d", a + i);
  for (i = 0; i <= 50; i++) {
    for (j = 0; j <= 50; j++) {
      bcs[i][j] = -1.0;
    }
  }
  double E = 0.0;
  for (i = 1; i <= n; i++) {
    int maxsizes[m];
    for (j = 0; j < m; j++) maxsizes[j] = a[j] * (i - 1);
    double table[m][n + 1];
    for (k = 0; k <= maxsizes[0] && k <= n; k++) table[0][k] = 1.0;
    for (; k <= n; k++) table[0][k] = 0.0;
    for (j = 1; j < m; j++) {
      for (k = 0; k <= n; k++) {
        table[j][k] = 0.0;
        for (l = 0; l <= k && l <= maxsizes[j]; l++)
          table[j][k] += achooseb(k, l) * table[j - 1][k - l];
      }
    }
    double total = pow(m, n);
    double prob = table[m - 1][n] / total;
    E += (1.0 - prob);
  }
  printf("%.15f\n", E);
}
