#include<bits/stdc++.h>
#define eps 1e-9
#define pii pair<double,double> 
#define mp make_pair
using namespace std;
const int N=200005;
pii dp[N],sum;
int n,m,k;
bool in[N];
pii operator -(const pii &a,const pii &b)
{
	return mp(a.first-b.first,a.second-b.second);
}
pii operator +(const pii &a,const pii &b)
{
	return mp(a.first+b.first,a.second+b.second);
} 
int main()
{
	scanf("%d%d%d",&n,&m,&k);
	for(int i=1,x;i<=k;++i)
	{
		scanf("%d",&x);
		in[x]=1;
	}
	sum=mp(0,0); 
	for(int i=n-1;i>=0;--i)
	{
		if(in[i])dp[i]=mp(1,0);
		else dp[i]=mp(sum.first/m,sum.second/m+1);
		sum=sum+dp[i]-dp[i+m]; 
	}
	if(abs(dp[0].first-1)<=eps)printf("-1");
	else printf("%.4lf",dp[0].second/(1-dp[0].first));
	return 0;
}
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
using namespace std;

typedef long long ll;

int main() {
    ll N, M, K, A;
    cin >> N >> M >> K;
    vector<bool> start(N + 1, false);
    rep(i, K) {
        cin >> A;
        start[A] = true;
    }
    double L = 0, R = 1e20;
    vector<double> dp(N + 1 + M, 0);
    rep(i, 100) {
        double m = (L + R) / 2, s = 0;
        rep(j, N) {
            if (start[N - 1 - j]) {
                dp[N - 1 - j] = m;
            } else {
                dp[N - 1 - j] = 1 + s / M;
            }
            s += dp[N - 1 - j];
            if (j >= M - 1) s -= dp[N - 1 - j + M];
            //cout << "s=" << s << " ";
        }
        if (dp[0] > m) L = m;
        else R = m;
        //rep(i, N + 1) cout << dp[i] << " "; cout << "\n";
        //cout << L << " " << R << "\n";
    }
    if (dp[0] > 1e15) cout << "-1\n";
    else cout << fixed << setprecision(20) << dp[0] << "\n";
}