#include<bits/stdc++.h>
using namespace std;
using LL=long long;
using P=pair<int,int>;
using T=tuple<int,int,int>;
constexpr int mod=1000000007;
constexpr int inf=2e9;
constexpr double eps=1e-13;
int in(){
    int x;
    scanf("%d",&x);
    return x;
}
int main(){
    int n=in(),m=in(),k=in();
    vector<double>dp1(n+m);
    vector<double>dp0(n+m);
    int range=0,maxrange=0;
    for(int i=0;i<k;i++)dp1[in()]=1.0;
    for(int i=0;i<n;i++){
        if(dp1[i])range++;
        else range=0;
        maxrange=max(range,maxrange);
    }
    if(maxrange>=m){
        cout<<-1<<endl;
        return 0;
    }
    double sum1,sum0;
    sum1=sum0=0.0;
    for(int i=n-1;i>=0;i--){
        if(dp1[i]==0.0){
            dp1[i]=sum1/m;
            dp0[i]=sum0/m+1.0;
        }
        sum1+=dp1[i]-dp1[i+m];
        sum0+=dp0[i]-dp0[i+m];
        //cout<<dp1[i]<<" "<<dp0[i]<<endl;
    }
    double ans=dp0[0]/(1.0-dp1[0]);
    printf("%.10lf\n",ans);
    return 0;
}
#include<bits/stdc++.h>

using namespace std;


#define pb    push_back
#define eb   emplace_back
#define ll  long long
#define pll pair<ll,ll>
#define ff first
#define ss second
#define endl "\n"
const ll maxn=6e5+54;
const ll mod =1e9+7  ;
const ll base=1e18;
ll n, k;
ll get(ll n,ll k)
{
  return min(k-1,2*n-k+1);
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    if (fopen("promote.in", "r"))
    {
        freopen("promote.in", "r", stdin);
        freopen("promote.out", "w", stdout);
    }

    cin>> n>> k;
    ll ans=0;
    for (int i=k+2;i<=2*n;i++)
    {
         ans=ans+max(0ll,get(n,i)*get(n,i-k));
    }
    cout <<ans;


}

