#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
const int INF = 0x3f3f3f3f;
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
template <class T>
inline void gmax(T &A, T B) {
  (A < B) && (A = B);
}
template <class T>
inline void gmin(T &A, T B) {
  (A > B) && (A = B);
}
template <class T>
inline bool scan_d(T &ret) {
  char c;
  int sgn;
  if (c = getchar(), c == EOF) return 0;
  while (c != '-' && (c < '0' || c > '9')) c = getchar();
  sgn = (c == '-') ? -1 : 1;
  ret = (c == '-') ? 0 : (c - '0');
  while (c = getchar(), c >= '0' && c <= '9') ret = ret * 10 + (c - '0');
  ret *= sgn;
  return 1;
}
inline void outt(int x) {
  if (x > 9) outt(x / 10);
  putchar(x % 10 + '0');
}
const int MAXN = 1e6 + 10;
int a[MAXN];
int main() {
  int n, m, h, sum = 0;
  scanf("%d%d%d", &n, &m, &h);
  for (int i = 1; i <= m; i++) {
    scanf("%d", &a[i]);
    sum += a[i];
  }
  int num = a[h];
  if (sum < n)
    printf("-1\n");
  else if (num < 2 || n < 2)
    printf("0\n");
  else if (sum - num <= n - 2)
    printf("1\n");
  else if (n == 2)
    printf("%.6f\n", 1.0 / double(sum - 1));
  else {
    double ans = 1.0;
    for (int i = sum - n + 1; i <= sum - 1; i++) {
      ans = ans * (double)(i - num + 1);
      ans = ans / (double)(i);
    }
    printf("%.6f\n", 1.0 - ans);
  }
  return 0;
}
