#include <bits/stdc++.h>
using namespace std;
int n, k, ee;
const int N = 100 + 12;
struct Tpoint {
  int x, y;
  int cdis(const Tpoint &a) {
    return (x - a.x) * (x - a.x) + (y - a.y) * (y - a.y);
  }
};
Tpoint points, epicentre;
long double diss[N];
long double f[N][N];
long double prod[N];
int i, j, tk;
int main() {
  while (scanf("%d%d%d", &n, &k, &ee) != EOF) {
    long double tee = 1 - (ee / 1000.0);
    scanf("%d%d", &epicentre.x, &epicentre.y);
    long double l = 0, r = 0;
    for (i = 0; i < n; ++i) {
      scanf("%d%d", &points.x, &points.y);
      diss[i] = epicentre.cdis(points) + 0.0;
      if (diss[i] > r) r = diss[i];
    }
    r = sqrt(r);
    int fk = n - k;
    while (((fabs(r - l) < 1e-10) ? 0 : (((r - l) < 0) ? -1 : 1)) > 0) {
      long double mid = (r + l) / 2;
      long double pmid = mid * mid;
      long double et = 1;
      for (i = 0; i < n; ++i)
        if (((fabs(pmid - diss[i]) < 1e-10)
                 ? 0
                 : (((pmid - diss[i]) < 0) ? -1 : 1)) < 0)
          prod[i] = exp(1 - diss[i] / pmid);
        else
          prod[i] = 1;
      memset(f, 0, sizeof(f));
      f[0][0] = prod[0];
      f[0][1] = 1 - prod[0];
      for (i = 1; i < n; ++i)
        for (j = 0; j <= fk; ++j) {
          if (j) f[i][j] += f[i - 1][j - 1] * (1 - prod[i]);
          f[i][j] += f[i - 1][j] * prod[i];
        }
      long double summ = 0;
      for (j = 0; j <= fk; ++j) summ += f[n - 1][j];
      if (((fabs(summ - tee) < 1e-10) ? 0 : (((summ - tee) < 0) ? -1 : 1)) > 0)
        r = mid;
      else
        l = mid;
    }
    cout.precision(20);
    cout << l << endl;
  }
  return 0;
}
