#include <string>
#include <fstream>
#include <cmath>
#include <cassert>
#include <vector>
#include <algorithm>

using namespace std;

typedef long double real;

const string filename = "intset",
             input_filename = filename + ".in",
             output_filename = filename + ".out";

const real eps = 1e-9;

real my_log (real x) {
  return logl (x);
}

real my_exp (real x) {
  return expl (x);
}

vector<real> fact_log;

real my_fact_log (int i) {
  assert (i >= 0 && i < (int) fact_log.size ());
  return fact_log[i];
}

int main (int, char **) {
  int k, n, l, m;
  ifstream in (input_filename.c_str());
  ofstream out (output_filename.c_str());
  in >> n >> l >> m;
  vector<real> p(l+1, (real) 0.0);
  vector<int> perm(n);
  for (k = 1; k <= n; k++) {
    perm[k-1] = k;
  }
  if (l > m) {
    swap (l, m);
  }
  int t = 0;
  do {
    t++;
    k = 0;
    for (int i = 0; i < m; i++) {
      if (perm[i] <= l) {
        k++;
      }
    }
    p[k] += 1.0;
  } while (next_permutation (perm.begin (), perm.end()));
  for (k = 0; k <= l; k++) {
    p[k] /= t; 
    fprintf (stderr, "p[%d] = %.10lg\n", k, (double) p[k]);
  }
  fprintf (stderr, "t = %d\n", t);

  int res = -1;
  real s = 1.0;
  for (k = 0; k <= l; k++) {
    if (s - 0.5 > -1e-11) {
      res = k;
    }
    s -= p[k];
  }
  assert (fabs (s) < eps);
  out << res << endl;

  return 0;
}

