#include <bits/stdc++.h>
using namespace std;
const int MAXN = 105;
const double error = 1e-8;
const double MAXDIST = 3000;
const double e = 2.7182818284590452353602874713527;
double D[MAXN];
double prob[MAXN];
double dp[MAXN][MAXN];
double sqr(const double &x) { return x * x; }
int main() {
  int n, k, eps, x0, y0;
  double ansl, ansr;
  double deps;
  cin >> n >> k >> eps >> x0 >> y0;
  for (int i = 1, x, y; i <= n; i++)
    cin >> x >> y, D[i] = sqrt(sqr((double)x - x0) + sqr((double)y - y0));
  deps = (double)eps / 1000;
  ansl = 0;
  ansr = MAXDIST;
  while (ansr - ansl > error) {
    double R = (ansl + ansr) / 2, p = 0;
    for (int i = 1; i <= n; i++)
      if (fabs(R - 0) < error)
        prob[i] = fabs(D[i] - 0) < error ? 1 : 0;
      else
        prob[i] = D[i] > R + error ? exp(1 - sqr(D[i]) / sqr(R)) : 1;
    memset(dp, 0, sizeof(dp));
    dp[0][0] = 1;
    for (int i = 1; i <= n; i++)
      for (int j = 0; j <= i; j++)
        dp[i][j] = (j > 0 ? dp[i - 1][j - 1] * prob[i] : 0) +
                   dp[i - 1][j] * (1 - prob[i]);
    for (int i = 0; i < k; i++) p += dp[n][i];
    if (p + error < deps)
      ansr = R;
    else
      ansl = R;
  }
  printf("%.8lf\n", ansr);
  return 0;
}
