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

typedef long long ll;
typedef unsigned long long ull;
const double pi = acos(-1);
const double eps = 1e-8;
const ll mod = 1e9 + 7;
const ull base = 131;
const ull mod1 = 1e9 + 9;
const ull mod2 = 1610612741;

const int maxn = 2e5 + 10;
int n, m, k;
bool vis[maxn];
double dp[maxn][2], now[2];

int main()
{
    scanf("%d%d%d", &n, &m, &k);
    while (k--)
    {
        int x;
        scanf("%d", &x);
        vis[x] = 1;
    }
    dp[n][0] = dp[n][1] = 0;
    int l, r;
    l = r = n;
    while (l >= 1)
    {
        int i = l - 1;
        if (vis[i]) dp[i][0] = 1, dp[i][1] = 0;
        else dp[i][0] = now[0] / m, dp[i][1] = now[1] / m + 1;
        now[0] += dp[i][0];
        now[1] += dp[i][1];
        l = i;
        if (r - l + 1 > m) now[0] -= dp[r][0], now[1] -= dp[r][1], --r;
    }
    if (fabs(dp[0][0] - 1) < 1e-8) printf("-1\n");
    else printf("%.4f\n", dp[0][1] / (1 - dp[0][0]));
    return 0;
}
#pragma GCC optimize("O3")   //
#include <bits/stdc++.h>
using namespace std;

#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define per(i, b, a) for(int i = b - 1; i >= a; i--)
#define trav(a, x) for(auto& a : x)
#define all(x) x.begin(), x.end()
#define sz(x) (int)(x).size()
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef long double ld;
typedef unsigned long long ull;

unsigned seed = chrono::system_clock::now().time_since_epoch().count();
mt19937 eng(seed);

ll random2(){
    return (1ll << 31ll)*eng()+eng();
}


ll n,m,k,q,T;

const ll big = 1000000007;
const ll big2 = 1000000009;
const ll mod =  998244353;

const int MAXN = 300001;
const ll TOT = 10000000000;

ll upp(ll i, ll j){
    if(j == 0)return 1;
    ll h = upp(i,j/2);
    if(j%2 == 0)return (h*h)%big;
    return (i*((h*h)%big))%big;
}

ll FAC[2001] = {0};
vl A;

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    //freopen("fhc.txt","r",stdin);
    //freopen("autput.txt","w",stdout);

    ll a,b,c,d;

    cin >> n >> m;

    ll sa = 0;
    rep(c1,0,n){
        cin >> a;
        A.push_back(a);
        sa += a;
    }

    a = n+m;
    b = sa+n;

    ll t = 1;
    ll tt = 1;

    for(ll c1 = 0; c1 < b; c1++){
        t *= c1+1;
        t %= big;
        tt *= a-c1;
        tt %= big;
    }
    ll ans = tt*upp(t,big-2);

    cout << ans%big << "\n";


    return 0;
}
