#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>
using namespace std;
const int maxn = 3e5;
const double eps = 1e-6;
int send[maxn];
double k[maxn], b[maxn], sumk = 0.0, sumb = 0.0;
int main() {
    int N, M, K;
    scanf("%d %d %d", &N, &M, &K);
    int x;
    for (int i = 0; i < K; i++) {
        scanf("%d", &x);
        send[x] = 1;
    }
    for (int i = N - 1; i >= 0; i--) {
        if (send[i]) {
            k[i] = 1;
            b[i] = 0;
        }
        else {
            k[i] = sumk / M;
            b[i] = sumb / M + 1;
        }
        sumk -= k[i + M];
        sumk += k[i];
        sumb -= b[i + M];
        sumb += b[i];
    }
    if (fabs(k[0] - 1.0) <= eps) {
        printf("-1\n");
    }
    else {
        printf("%.4f\n", b[0] / (1.0 - k[0]));
    }
    return 0;
}