#include <bits/stdc++.h>
using namespace std;
enum STATE { IN, OUT, BOUNDRY };
const double PI = acos(-1.0);
void fast_in_out() {
  std::ios_base::sync_with_stdio(NULL);
  cin.tie(NULL);
  cout.tie(NULL);
}
int dx[] = {0, 0, -1, 1, -1, 1, -1, 1, 0};
int dy[] = {-1, 1, 0, 0, -1, -1, 1, 1, 0};
int lx[] = {2, 2, -1, 1, -2, -2, -1, 1, 0};
int ly[] = {-1, 1, 2, 2, 1, -1, -2, -2, 0};
const double eps = 1e-9;
const int N = 300 + 50, M = 50 + 10, mod = 1e9 + 7;
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long psk[M][M];
void fill_psky() {
  for (int i = 0; i < M; i++) {
    psk[i][0] = 1;
    psk[i][i] = 1;
  }
  for (int i = 1; i < M; i++)
    for (int j = 1; j <= i; j++) psk[i][j] = psk[i - 1][j] + psk[i - 1][j - 1];
}
double dp[M][M][M];
bool vis[M][M][M];
int n, m;
int a[M];
double solve(int ind, int rem, int mx) {
  if (ind == m) return rem == 0 ? mx : 0;
  double &ret = dp[ind][rem][mx];
  if (vis[ind][rem][mx]) return ret;
  vis[ind][rem][mx] = 1;
  ret = 0;
  for (int i = 0; i <= rem; i++) {
    int x = (i + a[ind] - 1) / a[ind];
    ret += psk[rem][i] * solve(ind + 1, rem - i, max(mx, x)) / pow(m, i);
  }
  return ret;
}
int main() {
  fast_in_out();
  cout << fixed << setprecision(9);
  cin >> n >> m;
  for (int i = 0; i < m; i++) cin >> a[i];
  fill_psky();
  double ans = 0;
  cout << solve(0, n, 0);
  return 0;
}
