#include<iostream>
#include<vector>
#include<algorithm>
#include<set>
#include<queue>
#include<map>
#include<stack>
#include<iomanip>
#include<cmath>
#include<complex>
#include<math.h>
using namespace std;
#define pb push_back
#define ll long long int
# define pii pair<int ,int>
# define pll pair<ll,ll>
# define fio ios_base::sync_with_stdio(false); cin.tie(NULL)
# define ft first
# define sec second
//expected values is a*e0+b.
double a[100009]={0},b[100009]={0};
int h[100009];
int main()
{   cout<<fixed<<setprecision(9);
    int n,m,k;
    cin >>n >>m >>k;
    for(int i = 1 ; i <= k ; i++) {cin >>h[i]; a[h[i]]=1;b[h[i]]=0;}
    sort(h+1,h+k+1);
    a[n]=0;b[n]=0;
    for(int i = n-1; i>=0 ; i--)
    {
       if(a[i] != 1)
       {
           a[i] = (a[i+1]-a[min(i+m+1,n+1)])/m;
           b[i] = 1 + (b[i+1]-b[min(i+m+1,n+1)])/m;
       }
        a[i]+=a[i+1];
        b[i]+=b[i+1];
    }
    for(int i = 0 ; i <= n ; i++) {a[i]=a[i]-a[i+1]; b[i]=b[i]-b[i+1];}
    if( abs(a[0]-1) <= 0.000000001) cout<<"-1";
   else cout << b[0]/(1-a[0]);
}

/*
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
*/
#include<bits/stdc++.h>
#define ALL(x) (x).begin(),(x).end()
#define ll long long
#define db long double
#define ull unsigned long long
#define pii_ pair<int,int>
#define mp_ make_pair
#define pb push_back
#define fi first
#define se second
#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 show1(a) cout<<#a<<" = "<<a<<endl
#define show2(a,b) cout<<#a<<" = "<<a<<"; "<<#b<<" = "<<b<<endl
using namespace std;
const ll INF = 1LL<<60;
const int inf = 1<<30;
const int maxn = 2e5+5;
inline void fastio() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);}

int flag[maxn];
db f1[maxn],f2[maxn],suf1[maxn],suf2[maxn];

int main()
{
    //fastio();
    int n,m,k; scanf("%d%d%d",&n,&m,&k);

    rep(i,1,k){
        int x; scanf("%d",&x);
        flag[x] = 1;
    }
    per(i,n-1,0){
        if(flag[i]){
            f1[i] = 0;f2[i] = 1;
        }else{
            f1[i] = 1.0 + (suf1[i+1] - suf1[i+m+1]) / m;
            f2[i] = (suf2[i+1] - suf2[i+m+1]) / m;
        }//show2(f1[i],f2[i]);
        suf1[i] = f1[i] + suf1[i+1];
        suf2[i] = f2[i] + suf2[i+1];
    }
    db ans = f1[0] / (1 - f2[0]);
    //printf("%.4Lf\n",ans);
    if(ans > 1e13) cout << -1 << endl;
    else cout << fixed << setprecision(4) << ans << endl;
    return 0;
}
