#include <bits/stdc++.h>
using namespace std;
int eps, k, n;
int x[128], y[128];
double P[128], dp[128][128];
bool can(double R) {
  for (register int i = (1); i < (int)(n + 1); ++i) {
    double D =
        sqrt((x[0] - x[i]) * (x[0] - x[i]) + (y[0] - y[i]) * (y[0] - y[i]));
    if (D <= R)
      P[i] = 1;
    else
      P[i] = min(1., exp(1 - (D * D) / (R * R)));
  }
  for (register int i = (0); i < (int)(n + 1); ++i)
    for (register int j = (0); j < (int)(k + 1); ++j) {
      if (j == 0)
        dp[i][j] = 1;
      else if (i < j)
        dp[i][j] = 0;
      else
        dp[i][j] = P[i] * dp[i - 1][j - 1] + (1 - P[i]) * dp[i - 1][j];
    }
  return dp[n][k] >= (1000 - eps) / 1000.;
}
int main() {
  cin >> n >> k >> eps;
  for (register int i = (0); i < (int)(n + 1); ++i) cin >> x[i] >> y[i];
  double mn = 0, mx = 10e6;
  for (register int rep = (0); rep < (int)(100); ++rep) {
    double mid = (mn + mx) / 2;
    (can(mid) ? mx : mn) = mid;
  }
  cout << fixed << setprecision(10) << (mn + mx) / 2 << "\n";
  return 0;
}
