#include<bits/stdc++.h>
#define rep(i, n) for (int i = 0, length = n; i < length; i++)
#define fi first
#define se second
#define lb lower_bound
#define ub upper_bound
#define ep emplace
#define epb emplace_back
#define scll static_cast<long long> 
#define sz(x) static_cast<int>((x).size())
#define pfll(x) printf("%lld\n", x)
#define ci(x) cin >> x
#define ci2(x, y) cin >> x >> y
#define ci3(x, y, z) cin >> x >> y >> z
#define ci4(x, y, z) cin >> w >> x >> y >> z
#define co(x) cout << x << endl
#define co2(x, y) cout << x << " " << y << endl
#define co3(x, y, z) cout << x << " " << y << " " << z << endl
using namespace std;
typedef long long ll;
typedef pair<double, double> PL;

const int MAX_N = 2e5, MOD = 1e9 + 7, INF = 1e9, DIG = 50;
int n, m, k;
set<int> a;
PL bit[MAX_N + 1][DIG + 1];
double divi[DIG + 1];

PL sum(int i, int d) {
    ll fi = 0, se = 0;
    while (i > 0) {
        fi += bit[i][d].fi;
        se += bit[i][d].se;
        i -= i & -i;
    }
    return PL(fi, se);
}

void add(int i, int d, ll x, ll y) {
    while (i <= n) {
        bit[i][d].fi += x;
        bit[i][d].se += y;
        i += i & -i;
    }
}

int main() {
    ci3(n, m, k);
    rep(i, k) {
        int tmp;
        ci(tmp);
        a.ep(tmp);
    }
    rep(i, n) {
        if (a.find(i) != a.end()) continue;
        rep (j, DIG) {
            PL p = (i == 0 && j == 0) ? PL(0, 1) : sum(i, j);
            ll x = p.fi + p.se, y = p.se;
            add(i + 1, j, x / m, y / m);
            add(i + 1, j + 1, x % m, y % m);
            if (i + m + 1 <= n) {
                add(i + m + 1, j, -x / m , -y / m);
                add(i + m + 1, j + 1, -x % m , -y % m);
            }
            else {
                add(n, j, x * (i + m - n) / m, y * (i + m - n) / m);
                add(n, j + 1, x * (i + m - n) % m, y * (i + m - n) % m);
            }
        }
    }

    divi[0] = 1.0;
    rep(i, DIG) divi[i + 1] = divi[i] / m;

    ll coe[DIG + 1], ans[DIG + 1];
    coe[0] = 1.0;
    fill(coe + 1, coe + DIG + 2, 0.0);
    rep(i, DIG + 1) ans[i] = sum(n, i).fi;
    double jdg = 0.0;
    rep(i, DIG + 1) jdg += ans[DIG - i] * divi[DIG - i];
    if (abs(jdg) < 1e-10) {
        co(-1);
        return 0;
    }
    
    for (auto &i : a) {
        rep(j, DIG + 1) {
            PL tmp = sum(i, j);
            ans[j] += tmp.fi;
            coe[j] -= tmp.se;
        }
    }
    double res1 = 0.0, res2 = 0.0;
    rep(i, DIG + 1) {
        res1 += ans[DIG - i] * divi[DIG - i];
        res2 += coe[DIG - i] * divi[DIG - i];
    }
    co(res1 / res2);
    return 0;
}

#include<bits/stdc++.h>
#define double long double
#define maxn 100010
using namespace std;
int read()
{
	int s=0,w=1;
	char ch=getchar();
	while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
	while(ch>='0'&&ch<='9') s=(s<<3)+(s<<1)+(ch^48),ch=getchar();
	return s*w;
}
int n,m,K,v[maxn];
double k[maxn],b[maxn],sk[maxn],sb[maxn];
#define ABS(x) ((x)<0?-(x):(x))
signed main()
{
	n=read(),m=read(),K=read();
	for(int i=1,x;i<=K;i++) v[x=read()]=1,k[x]=1;
	for(int i=n-1;~i;i--)
	{
		if(!v[i]) k[i]=(sk[i+1]-sk[i+m+1])/m,b[i]=(sb[i+1]-sb[i+m+1])/m+1;
		sk[i]=sk[i+1]+k[i],sb[i]=sb[i+1]+b[i];
	}
	if(ABS(k[0]-1)<1e-7) cout<<-1<<'\n';
	else cout<<fixed<<setprecision(10)<<b[0]/(1-k[0])<<'\n';
	return 0;
}