#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define rep(i,n) for(int (i)=0;(i)<(n);(i)++)
#define P pair<ll,ll>
using Graph = vector<vector<int>>;

int main() {
    ll N,M,K; cin >> N >> M >> K;
    ll a; set<ll> NG;
    rep(i,K){
        cin >> a; NG.insert(a);
    }
    double dpa[N+M],dpb[N+M],suma[N+M+1],sumb[N+M+1];
    rep(i,M){
        dpa[N+i] = 0; dpb[N+i] = 0;
        suma[N+i] = 0; sumb[N+i] = 0;
    }
    suma[N+M] = 0; sumb[N+M] = 0;
    for(ll i=N-1;i>=0;i--){
        if(NG.count(i)){
            dpa[i] = 1; dpb[i] = 0;
            suma[i] = dpa[i]+suma[i+1];
            sumb[i] = dpb[i]+sumb[i+1];
        }
        else{
            if(suma[i+1]-suma[i+M+1]==M){
                cout << -1 << endl; return 0;
            }
            dpa[i] = (double)(suma[i+1]-suma[i+M+1])/M;
            dpb[i] = (double)(sumb[i+1]-sumb[i+M+1])/M +1;
            suma[i] = dpa[i]+suma[i+1];
            sumb[i] = dpb[i]+sumb[i+1];
        }
    }
    cout << setprecision(10) << dpb[0]/(1-dpa[0]) << endl;
}
#include <stdio.h>
#include <math.h>
#define MN 100000
const double eps = 1e-8;

int n,m,k;
bool b[MN+5];

struct F{
	double k,a;
	F(){
		k = a = 0;
	}
	F(double k,double a){
		this->k = k;
		this->a = a;
	}
	F operator + (const F& that)const{
		F ret;
		ret.k = this->k + that.k;
		ret.a = this->a + that.a;
		return ret;
	}
	F operator - (const F& that)const{
		F ret;
		ret.k = this->k - that.k;
		ret.a = this->a - that.a;
		return ret;
	}
	F operator * (double x)const{
		F ret = *this;
		ret.k *= x;
		ret.a *= x;
		return ret;
	}
	F operator / (double x)const{
		F ret = *this;
		ret.k /= x;
		ret.a /= x;
		return ret;
	}
	F& operator += (const F& that){
		*this = *this+that;
		return *this;
	}
	F& operator -= (const F& that){
		*this = *this-that;
		return *this;
	}
}f[MN+5];

int main(){
	scanf("%d%d%d",&n,&m,&k);
	for(int i=1,a;i<=k;i++){
		scanf("%d",&a);
		b[a] = true;
	}
	f[n] = F(0,0);
	F t = f[n]*m;
	for(int i=n-1;i>=0;i--){
		t += f[i+1];
		if(i+m+1<=n) t -= f[i+m+1];
		else t -= f[n];
		if(b[i]){
			f[i].a = 0;
			f[i].k = 1;
		}else{
			f[i] = t/m;
			f[i].a++;
		}
	}
	f[0].k = 1-f[0].k;
	if(fabs(f[0].k)<eps){
		puts("-1");
	}else{
		printf("%.6lf\n",f[0].a/f[0].k);
	}
}