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

#define REP(i,a,b) for(int i=a;i<=b;i++)
using LL = long long;

const int Nmax=109;
const LL INF=1e18+9;
int N,r;
LL X,A[Nmax],dp[Nmax][Nmax][Nmax],ans=INF;

int main() {
    ios_base::sync_with_stdio(0);    cin.tie(0);
    cin>>N>>X;
    REP(i,1,N) cin>>A[i];
    REP(MOD,1,N) {
        REP(i,0,N) {
            REP(j,0,N) {
                REP(k,0,N-1) dp[i][j][k]=-INF;
            }
        }
        dp[0][0][0]=0;
        REP(i,0,N-1) {
            REP(j,0,MOD) {
                REP(k,0,MOD-1) {
                    if (dp[i][j][k]<0) continue;
                    dp[i+1][j][k]=max(dp[i+1][j][k],dp[i][j][k]);
                    // cout<<i+1<<" "<<j<<" "<<k<<" -- "<<dp[i+1][j][k]<<endl;
                    r=(k+A[i+1])%MOD;
                    dp[i+1][j+1][r]=max(dp[i+1][j+1][r],dp[i][j][k]+A[i+1]);
                    // cout<<i+1<<" "<<j+1<<" "<<r<<" : "<<dp[i+1][j+1][r]<<endl;
                }
            }
        }
        r=X%MOD;
        if (dp[N][MOD][r]>0) ans=min(ans,(X-dp[N][MOD][r])/MOD);
        // cout<<MOD<<" "<<r<<" -> "<<(X-dp[N][MOD][r])/MOD<<endl;
    }
    cout<<ans;
    return 0;
}

#include <bits/stdc++.h>

using namespace std;

const int N = 1e6 + 5;
typedef long long LL;
int n, m, k;
int st[N];
long double a[N], b[N], suma[N], sumb[N];
int main() {
    cin >> n >> m >> k;
    for (int i = 0; i < k; i++) {
        int x;
        cin >> x;
        st[x] = 1;
    }
    for (int i = n - 1; i >= 0; i--) {
        if (st[i]) {
            a[i] = 1;
            b[i] = 0;
        } else {
            a[i] = (suma[i + 1] - suma[i + 1 + m]) / (m * 1.0);
            b[i] = (sumb[i + 1] - sumb[i + 1 + m]) / (m * 1.0) + 1.0;
        }
        suma[i] = suma[i + 1] + a[i];
        sumb[i] = sumb[i + 1] + b[i];
    }
    if (fabs(a[0] - 1.0) < 1e-6)
        puts("-1");
    else
        printf("%.4Lf\n", b[0] / (long double)(1.0 - a[0]));
    return 0;
}