#include <bits/stdc++.h>
using namespace std;
double round(double x, int precision) {
  return floor(x * pow(10.0, (double)precision) + 0.5) /
         pow(10.0, (double)precision);
}
string itoa(long long a) {
  if (!a) return "0";
  string ret;
  for (long long i = a; i > 0; i = i / 10) ret += ((i % 10) + 48);
  reverse(ret.begin(), ret.end());
  return ret;
}
int toi(string s) {
  int r = 0;
  istringstream sin(s);
  sin >> r;
  return r;
}
long long toi64(string s) {
  long long r = 0;
  istringstream sin(s);
  sin >> r;
  return r;
}
double tod(string s) {
  double r = 0;
  istringstream sin(s);
  sin >> r;
  return r;
}
vector<string> token(string a, string b) {
  const char *q = a.c_str();
  while (count(b.begin(), b.end(), *q)) q++;
  vector<string> oot;
  while (*q) {
    const char *e = q;
    while (*e && !count(b.begin(), b.end(), *e)) e++;
    oot.push_back(string(q, e));
    q = e;
    while (count(b.begin(), b.end(), *q)) q++;
  }
  return oot;
}
template <class T>
inline T gcd(T a, T b) {
  if (a < 0) return gcd(-a, b);
  if (b < 0) return gcd(a, -b);
  return (b == 0) ? a : gcd(b, a % b);
}
template <class T>
inline T lcm(T a, T b) {
  if (a < 0) return lcm(-a, b);
  if (b < 0) return lcm(a, -b);
  return a * (b / gcd(a, b));
}
template <class T>
inline T sqr(T x) {
  return x * x;
}
template <class T>
inline T power(T x, T p) {
  if (!p) return 1;
  return x * power(x, p - 1);
}
const int mx = 105;
int n, m, h;
int lft, rte, tot;
bool vis[mx][mx][mx][2];
double dp[mx][mx][mx][2];
double call(int nisi, int my, int othr, bool one) {
  if (nisi == n) return one;
  if (!vis[nisi][my][othr][one]) {
    vis[nisi][my][othr][one] = true;
    double lp = double(lft - my) / double(tot - my - othr);
    double rp = double(rte - othr) / double(tot - my - othr);
    double aa = 0;
    if (my < lft) aa = lp * call(nisi + 1, my + 1, othr, 1);
    double bb = 0;
    if (othr < rte) bb = rp * call(nisi + 1, my, othr + 1, one);
    return dp[nisi][my][othr][one] = aa + bb;
  }
  return dp[nisi][my][othr][one];
}
int main() {
  int jog = 0;
  while (cin >> n >> m >> h) {
    for (int i = 1; i <= m; i++) {
      int tt;
      scanf("%d", &tt);
      if (i == h)
        lft = tt - 1;
      else
        rte += tt;
      jog += tt;
    }
    if (jog < n) {
      puts("-1.0");
      return 0;
    }
    tot = lft + rte;
    n--;
    printf("%.15lf\n", call(0, 0, 0, 0));
  }
  return 0;
}
