#include <bits/stdc++.h>
using namespace std;
void file() {}
void fast() {
  std::ios_base::sync_with_stdio(0);
  cin.tie(NULL);
}
const int N = 50 + 20;
long long nCr[70][70];
void build() {
  nCr[0][0] = 1;
  for (int i = 1; i < 70; i++) {
    nCr[i][0] = nCr[i][i] = 1;
    for (int j = 1; j < i; j++) nCr[i][j] = (nCr[i - 1][j] + nCr[i - 1][j - 1]);
  }
}
bool vis[N][N][N];
double dp[N][N][N];
int m, n;
int room[N];
double solve(int idx_room, int rem_n, int mx) {
  if (idx_room == m) {
    return rem_n == 0 ? mx : 0;
  }
  double &ret = dp[idx_room][rem_n][mx];
  if (vis[idx_room][rem_n][mx]) {
    return ret;
  }
  vis[idx_room][rem_n][mx] = 1;
  ret = 0;
  for (int i = 0; i <= rem_n; i++) {
    int group = (i + room[idx_room] - 1) / room[idx_room];
    ret += nCr[rem_n][i] * (1.0 / pow(m, i)) *
           solve(idx_room + 1, rem_n - i, max(mx, group));
  }
  return ret;
}
int main() {
  file();
  fast();
  build();
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    cin >> room[i];
  }
  cout << fixed << setprecision(9);
  cout << solve(0, n, 0) << "\n";
}
