#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:20000000")
string problem_name = "a";
void init() { freopen((problem_name + ".in").c_str(), "rt", stdin); }
int x[111], y[111];
double dst(int a, int b) {
  double res = sqrt((double)(x[a] - x[b]) * (x[a] - x[b]) +
                    (y[a] - y[b]) * (y[a] - y[b]));
  return res;
}
double mas[111];
double dp[111][111];
int n, k;
double go(int left, int cur) {
  if (left <= 0) return cur >= k;
  if (dp[left][cur] > -.1) return dp[left][cur];
  double res = 0;
  res = mas[left] * go(left - 1, cur + 1) + (1 - mas[left]) * go(left - 1, cur);
  return dp[left][cur] = res;
}
int main() {
  scanf("%d%d", &n, &k);
  double e;
  scanf("%lf", &e);
  scanf("%d%d", &x[0], &y[0]);
  for (int i = 1; i <= n; i++) scanf("%d%d", &x[i], &y[i]);
  double l = 0, r = 5000;
  for (int st = 1; st <= 100; st++) {
    double R = (l + r) / 2;
    for (int i = 0; i <= 101; i++)
      for (int j = 0; j <= 101; j++) dp[i][j] = -1;
    for (int i = 1; i <= n; i++) {
      double d = dst(0, i);
      if (d - 1e-9 < R)
        mas[i] = 1;
      else
        mas[i] = exp(1 - d * d / (R * R));
    }
    double cur = 1 - go(n, 0);
    if (cur - 1e-9 > e / 1000.)
      l = R;
    else
      r = R;
  }
  printf("%.9lf\n", l);
  return 0;
}
