#include<bits/stdc++.h>
using namespace std;

const int N=2e+5+10;
pair<long double,long double> dp[N];
int A[11],n,m,k;
bool isp[N];

bool ispos()
{
	int cnt=0;
	for(int i=1;i<=n;i++)
	{
		if(isp[i]==1)
			cnt++;
		else
			cnt=0;
		if(cnt==m)
			return false;
	}
	return true;
}

int main()
{
	cin>>n>>m>>k;
	for(int i=1;i<=k;i++)
	{
		cin>>A[i];
		isp[A[i]] = true;
	}
	if(!ispos())
	{
		cout<<-1;
		return 0;
	}
	pair<long double,long double> S={0,0};
	for(int i=n-1;i>=0;i--)
	{
		S.first -= dp[i+m+1].first;
		S.second -= dp[i+m+1].second;
		if(isp[i])
		{
			dp[i]={1,0};
		}
		else
		{
			dp[i]={S.first/(long double)m,1+S.second/(long double)m};
		}
		S.first += dp[i].first;
		S.second += dp[i].second;
	}
	long double ans = dp[0].second/(1 - dp[0].first);
	cout<<setprecision(10)<<fixed<<ans;
}


#include <bits/stdc++.h>
using namespace std;
 
#define REP(i, a, b) for(int i = (a); i <= (b); i++)
#define PER(i, a, b) for(int i = (a); i >= (b); i--)
#define rep(i, a, b) for(int i = (a); i < (b); i++)
#define all(S) (S).begin(), (S).end()
#define pb push_back
#define mk make_pair
#define S second
#define F first
typedef long long ll;
typedef long double lf;
typedef pair<int, int> ii;
const int MAX = 1e5+5;
int N, M, K, x, a[MAX];
lf sum[2*MAX];

lf solve(lf m) {
    PER(i, N-1, 0) {
        if(a[i]) sum[i] = m + sum[i+1];
        else sum[i] = 1 + (lf)((0.0 + sum[i+1] - sum[i+M+1]) / M) + sum[i+1];
    }
    return sum[0] - sum[1];
}

lf search(lf i, lf j, int k) {
    lf m = (i+j) / 2.0;
    if(!k) return m;
    if(solve(m) >= m) return search(m, j, k-1);
    else return search(i, m, k-1);
}

int main(int argc, char ** argv) {
    cout << fixed << setprecision(6);
    scanf("%d%d%d", &N, &M, &K);
    rep(i, 0, K) {
        scanf("%d", &x);
        a[x] = true;
    }
    lf ans = search(1, 1e12, 100);
    if(abs(ans-1e12) < 1e-5) puts("-1");
    else cout << ans << "\n";
    return 0;
}
