#include <bits/stdc++.h>
using namespace std;
double Cnk(int n, int k) {
  double result = 1;
  for (int i = 1; i <= k; ++i) {
    result *= n - k + i;
    result /= i;
  }
  return result;
}
double Power(int n, int power) {
  double result = 1;
  for (int i = 0; i < power; ++i) {
    result *= n;
  }
  return result;
}
int main() {
  int n, m;
  cin >> n >> m;
  vector<int> a(m);
  for (int i = 0; i < m; ++i) {
    cin >> a[i];
  }
  vector<vector<vector<double> > > p(n + 1);
  for (int i = 0; i <= n; ++i) {
    p[i].resize(m + 1);
    for (int j = 0; j <= m; ++j) {
      p[i][j].assign(n + 1, 0);
    }
  }
  for (int j = 0; j <= m; ++j) {
    p[0][j][0] = 1;
    for (int i = 1; i <= n; ++i) {
      p[0][j][i] = 0;
      p[i][j][0] = 0;
    }
  }
  for (int i = 0; i <= n; ++i) {
    for (int k = 0; k <= n; ++k) {
      if (k == (i + a[0] - 1) / a[0]) {
        p[i][1][k] = 1;
      } else {
        p[i][1][k] = 0;
      }
    }
  }
  for (int j = 2; j <= m; ++j) {
    for (int i = 1; i <= n; ++i) {
      for (int k = 1; k <= n; ++k) {
        p[i][j][k] = 0;
        for (int h = a[j - 1] * k - a[j - 1] + 1;
             (h <= i) && (h < a[j - 1] * (k + 1) - a[j - 1] + 1); ++h) {
          double sum = 0;
          for (int l = 0; l <= k; ++l) {
            sum += p[i - h][j - 1][l];
          }
          p[i][j][k] += Cnk(i, h) * Power(j - 1, i - h) * sum;
        }
        for (int h = 0; (h <= i) && (h < k * a[j - 1] - a[j - 1] + 1); ++h) {
          p[i][j][k] += Cnk(i, h) * Power(j - 1, i - h) * p[i - h][j - 1][k];
        }
        p[i][j][k] /= Power(j, i);
      }
    }
  }
  double E = 0;
  for (int i = 0; i <= n; ++i) {
    E += i * p[n][m][i];
  }
  printf("%.10lf", E);
  getchar();
  getchar();
  return 0;
}
