#include <bits/stdc++.h>
using namespace std;
const double e = 2.7182818284590452353602874713527;
const int MAXN = 128;
int n;
int x[MAXN], y[MAXN];
double dd[MAXN];
int xx, yy;
int k, eps;
double dis(double x1, double y1, double x2, double y2) {
  double dx = x1 - x2;
  double dy = y1 - y2;
  return sqrt(dx * dx + dy * dy);
}
bool isok(double r) {
  double a[MAXN], b[MAXN];
  for (int i = 0; i < n; ++i) {
    if (dd[i] <= r) {
      a[i] = 1.0;
      b[i] = 0.0;
    } else {
      a[i] = pow(e, 1 - dd[i] * dd[i] / (r * r));
      b[i] = 1 - a[i];
    }
  }
  double ret[MAXN] = {0};
  ret[0] = 1;
  for (int i = 0; i < n; ++i) {
    double temp[MAXN] = {0};
    for (int j = 0; j <= i; ++j) {
      temp[j] = ret[j] * b[i];
    }
    for (int j = 0; j <= i; ++j) {
      temp[j + 1] += ret[j] * a[i];
    }
    for (int j = 0; j <= i + 1; ++j) {
      ret[j] = temp[j];
    }
  }
  double sum = 0;
  for (int i = n; i >= k; --i) {
    sum += ret[i];
  }
  return sum >= (1000 - eps) / 1000.0;
}
int main() {
  scanf("%d", &n);
  scanf("%d %d", &k, &eps);
  scanf("%d %d", &xx, &yy);
  double down = 0, up = 0;
  for (int i = 0; i < n; ++i) {
    scanf("%d %d", x + i, y + i);
    dd[i] = dis(x[i], y[i], xx, yy);
    up = max(up, dd[i]);
  }
  for (int i = 0; i < 100; ++i) {
    double mid = (down + up) / 2;
    if (isok(mid)) {
      up = mid;
    } else {
      down = mid;
    }
  }
  printf("%.20lf\n", (down + up) / 2);
  return 0;
}
