#include <bits/stdc++.h>
using namespace std;
template <class T>
T sqr(T X) {
  return X * X;
}
const int maxn = 110;
const double zero = 1e-8;
int n, K;
double omiga;
struct COO {
  double x, y;
} ob[maxn], nuclear;
double p[maxn], f[maxn][maxn];
double numb;
double ans;
void init() {
  scanf("%d", &n);
  scanf("%d%lf", &K, &omiga);
  omiga = 1.0 - omiga / 1000;
  scanf("%lf%lf", &nuclear.x, &nuclear.y);
  for (int i = 1; i <= n; i++) scanf("%lf%lf", &ob[i].x, &ob[i].y);
}
int ZO(double comX, double comY) {
  if (abs(comY - comX) <= zero) return 0;
  if (comX < comY)
    return -1;
  else
    return 1;
}
void work1(double R) {
  for (int i = 1; i <= n; i++) {
    double Di = sqr(nuclear.x - ob[i].x) + sqr(nuclear.y - ob[i].y);
    if (ZO(Di, sqr(R)) <= 0)
      p[i] = 1.0;
    else
      p[i] = exp(1 - Di / sqr(R));
  }
}
void dp() {
  for (int i = 0; i <= n; i++)
    for (int j = 0; j <= n; j++) f[i][j] = 0.0;
  f[0][0] = 1.0;
  for (int i = 1; i <= n; i++) f[i][0] = f[i - 1][0] * (1 - p[i]);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= i; j++)
      f[i][j] = f[i - 1][j - 1] * p[i] + f[i - 1][j] * (1.0 - p[i]);
  numb = 0.0;
  for (int j = K; j <= n; j++) numb += f[n][j];
}
void solve() {
  double Lx = 0, Rx = 4000.0;
  while (ZO(Lx, Rx) < 0) {
    double mid = (Lx + Rx) / 2;
    work1(mid);
    dp();
    if (numb >= omiga)
      Rx = mid;
    else
      Lx = mid;
  }
  ans = Lx;
}
void print() { printf("%.10lf\n", ans); }
int main() {
  init();
  solve();
  print();
  return 0;
}
