#include <bits/stdc++.h>
using namespace std;
vector<long long> factors, v(100005, 1);
void factorize() {
  for (long long i = 2; i <= 1e5; i++) {
    if (v[i]) {
      for (long long j = i * i; j <= 1e5; j += i) {
        v[j] = 0;
      }
      factors.push_back(i);
    }
  }
}
void solve(set<long long>& s, long long val, map<long long, long long>& m) {
  long long cnt = 0;
  for (long long i = 0; i < factors.size() && factors[i] <= val; i++) {
    long long prd = factors[i];
    while (prd <= val) {
      cnt += (val / prd);
      prd *= factors[i];
    }
    s.insert(factors[i]);
    m[factors[i]] = cnt;
    cnt = 0;
  }
  return;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long n, m, h, t = 0, ms = 0;
  cin >> n >> m >> h;
  vector<long long> v(m + 1);
  for (long long i = 1; i <= m; i++) {
    cin >> v[i];
    t += v[i];
    if (i == h) {
      ms = v[i];
    }
  }
  long double ans = 1;
  if (t < n) {
    cout << -1;
    return 0;
  }
  if (ms <= 1) {
    cout << 0;
    return 0;
  }
  if (t == n || (t - ms) < (n - 1)) {
    cout << 1;
    return 0;
  }
  factorize();
  set<long long> num, den;
  map<long long, long long> numer, deno;
  long long i = (t - ms), j = t - 1;
  for (i = (t - ms); i > (t + 1 - ms - n) && j > (t - n); i--, j--) {
    ans *= ((long double)i) / (j);
  }
  while (i > (t + 1 - ms - n)) {
    ans *= ((long double)i);
    i--;
  }
  while (j > (t - n)) {
    ans = ans / j;
    j--;
  }
  ans = ((long double)1) - ans;
  cout << setprecision(12) << ans;
  return 0;
}
