#include <bits/stdc++.h>
using namespace std;
unsigned long long gcd(unsigned long long m, unsigned long long n) {
  unsigned long long tmp;
  while (n) {
    tmp = n;
    n = m % n;
    m = tmp;
  }
  return m;
}
int main(void) {
  int i, j, n, m, h;
  unsigned long long g, nn, dn, num = 0LLU, den = 0LLU;
  double ans;
  std::vector<unsigned long long>::iterator it, it2;
  cin >> n >> m >> h;
  for ((i) = 0; (i) < (int)(m); (i)++) {
    cin >> j;
    if (i != h - 1) num += j;
    den += j;
  }
  if (den < n) {
    cout << "-1.0\n";
    return 0;
  }
  if (num < n - 1) {
    cout << "1.0\n";
    return 0;
  }
  den--;
  unsigned long long lim = 18446744073709551615LLU;
  nn = 1LLU, dn = 1LLU;
  ans = 1.0;
  for ((i) = 1; (i) < (int)(n); (i)++) {
    if (num == 1 && i < n - 1) {
      cout << "1.0\n";
      return 0;
    }
    g = 1;
    if (nn >= lim / num || dn >= lim / den) {
      ans *= (double)nn / (double)dn;
      nn = num, dn = den;
    } else {
      nn *= num, dn *= den;
    }
    num--;
    den--;
  }
  ans *= (double)nn / (double)dn;
  printf("%.7f\n", 1.0 - ans);
  return 0;
}
