#include <bits/stdc++.h>
using namespace std;
inline int iin() {
  int x;
  scanf("%d", &x);
  return x;
}
inline long long int lin() {
  long long int x;
  scanf("%lld", &x);
  return x;
}
inline long long int Lin() {
  long long int x;
  scanf("%I64d", &x);
  return x;
}
inline int iout(int x) { printf("%d", x); }
inline long long int lout(long long int x) { printf("%lld", x); }
inline long long int Lout(long long int x) { printf("%I64d", x); }
const int maxn4 = 1e4 + 85, maxn5 = 1e5 + 69, maxn6 = 1e6 + 85,
          maxn7 = 1e7 + 69, maxn8 = 1e8 + 85, maxn9 = 1e9 + 69, modi1 = 1e7 + 7,
          modi2 = 1e9 + 7;
const long long int mod1 = 1e7 + 7, mod2 = 1e9 + 7;
int mn = INT_MAX, mx = INT_MIN;
int a[55];
double f[55][55], c[55][55];
int main() {
  int n, m;
  double all = 1;
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++) scanf("%d", &a[i]);
  for (int i = 1; i <= n; i++) all *= m;
  for (int i = 0; i <= n; i++) {
    c[i][0] = 1;
    for (int j = 1; j <= i; j++) c[i][j] = c[i - 1][j - 1] + c[i - 1][j];
  }
  double ans = 1;
  for (int x = 1; x <= n; x++) {
    memset(f, 0, sizeof f);
    f[0][0] = 1;
    for (int i = 0; i < m; i++)
      for (int j = 0; j <= n; j++)
        for (int k = 0; j + k <= n and k <= x * a[i + 1]; k++)
          f[i + 1][j + k] += f[i][j] * c[n - j][k];
    ans += 1.0 - f[m][n] / all;
  }
  printf("%.20f", ans);
  return 0;
}
