#include <bits/stdc++.h>
#include <variant>

#define rep2(i,k,n) for(i64 i=(i64)(k);i<(i64)(n);i++)
#define rep(i,n) rep2(i,0,n)
#define all(x) begin(x),end(x)
#ifdef ENV_LOCAL
#define dump if (1) cerr
#else
#define dump if (0) cerr
#endif

using namespace std;
using namespace std::string_literals;

using i32 = int32_t;
using i64 = int64_t;
using f64 = double;
using f80 = long double;
using vi32 = vector<i32>;
using vi64 = vector<i64>;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  i64 n,m,k;
  cin>>n>>m>>k;
  vi64 a(k);
  rep(i,k) cin>>a[i];
  vector<f64> c0(n+1);
  vector<f64> c1(n+1);
  rep(i,k) c1[a[i]] = 1.0;
  f64 s0 = 0;
  f64 s1 = 0;
  rep(ri,n) {
    i64 i = n - 1 - ri;
    s0 += c0[i+1];
    s1 += c1[i+1];
    if (ri >= m) {
      s0 -= c0[i+m+1];
      s1 -= c1[i+m+1];
    }
    if (c1[i] == 1.0) continue;
    else {
      c0[i] = s0 / m + 1.0;
      c1[i] = s1 / m;
    }
  }
  if (abs(1.0 - c1[0]) < 1e-8) {
    cout<<-1<<endl;
  } else {
    cout<<fixed<<setprecision(10)<<c0[0] / (1.0 - c1[0])<<endl;
  }
  return 0;
}

#include <bits/stdc++.h>

// 1. dp
typedef long double ld;
#define int long long

#define gcd            __gcd
#define endl           "\n"
#define setbits(x)     __builtin_popcountll(x)
#define zrobits(x)     __builtin_ctzll(x)
#define mod            1000000007
#define mod2           998244353
#define maxe           *max_element
#define mine           *min_element
#define inf            1e18
#define pb             push_back
#define all(x)         x.begin(), x.end()
#define f              first
#define s              second
#define lb             lower_bound
#define ub             upper_bound
#define ins            insert
#define sz(x)          (int)(x).size()
#define mk             make_pair
#define deci(x, y)     fixed<<setprecision(y)<<x
#define w(t)           int t; cin>>t; while(t--)
#define nitin          ios_base::sync_with_stdio(false); cin.tie(nullptr)
#define PI             3.141592653589793238
using namespace std;
ld dp[101][101][101];
void solve() {
    int a,b,c;
    cin>>a>>b>>c;
    for(int i=100;i>=0;i--)
    {
        for(int j=100;j>=0;j--)
        {
            for(int k=100;k>=0;k--)
            {
                if(i==0 && j==0 && k==0)
                    continue;
                if(i==100 || j==100 || k==100)
                {
                    dp[i][j][k]=0;
                    continue;
                }
                dp[i][j][k]=(i*(dp[i+1][j][k]+1)+j*(dp[i][j+1][k]+1)+k*(dp[i][j][k+1]+1))/((ld)(i+j+k));
            }
        }
    }
    cout<<deci(dp[a][b][c],9)<<endl;
}

int32_t main() {
    nitin;

    solve();
}
