#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline T sqr(T n) {
  return n * n;
}
template <typename T>
inline T pmod(T n, T m) {
  return ((n % m) + m) % m;
}
template <typename T>
T power(T n, long long p) {
  if (!p)
    return 1;
  else {
    T res = sqr(power(n, p >> 1));
    if (p & 1) res *= n;
    return res;
  }
}
template <typename T>
T bigmod(T n, long long p, T m) {
  if (!p)
    return 1;
  else {
    T r = sqr(bigmod(n, p >> 1, m)) % m;
    if (p & 1) r = (r * n) % m;
    return r;
  }
}
template <typename T>
T exgcd(T a, T b, T& x, T& y) {
  if (!b) {
    x = 1;
    y = 0;
    return a;
  } else {
    T g = exgcd(b, a % b, y, x);
    y -= (a / b) * x;
    return g;
  }
}
template <typename T>
T modinv(T a, T m) {
  T x, y;
  exgcd(a, m, x, y);
  return pmod(x, m);
}
int test, cas = 1;
double getNCR(int n, int r) {
  double res = 1;
  for (int i = 1; i <= r; ++i) {
    res = res * (n - i + 1) / i;
  }
  return res;
}
int main() {
  int n, m, h, t, s;
  int sum = 0;
  scanf("%d %d %d", &n, &m, &h);
  for (int i = 1; i <= m; ++i) {
    scanf("%d", &s);
    sum += s;
    if (i == h) t = s;
  }
  if (sum < n) {
    printf("-1\n");
  } else if (sum - t < n - 1) {
    printf("1\n");
  } else {
    double p = getNCR(sum - t, n - 1);
    double q = getNCR(sum - 1, n - 1);
    double res = (q - p) / q;
    printf("%.6f\n", res);
  }
  return 0;
}
