#include <bits/stdc++.h>
const double eps = 1e-10;
const double e = 2.7182818284590452353602874713527;
int k, et, x, y, n;
int a[100], b[100];
double dp[101][101];
double dist(int idx) {
  return sqrt((a[idx] - x) * (a[idx] - x) + (b[idx] - y) * (b[idx] - y));
}
double getProb(int idx, double r) {
  double dis = dist(idx);
  if (dis <= r)
    return 1;
  else
    return pow(e, 1 - dis * dis / r / r);
}
bool check(double r) {
  for (int i = 1; i <= 100; i++) dp[0][i] = 0;
  dp[0][0] = 1;
  for (int i = 1; i <= n; i++) {
    double prob = getProb(i - 1, r);
    dp[i][0] = dp[i - 1][0] * (1 - prob);
    for (int j = 1; j < i; j++)
      dp[i][j] = dp[i - 1][j - 1] * prob + dp[i - 1][j] * (1 - prob);
    dp[i][i] = dp[i - 1][i - 1] * prob;
  }
  double tot = 0;
  for (int i = 0; i < k; i++) tot += dp[n][i];
  return tot * 1000 < et;
}
int main() {
  scanf("%d", &n);
  scanf("%d%d", &k, &et);
  scanf("%d%d", &x, &y);
  for (int i = 0; i < n; i++) scanf("%d%d", &a[i], &b[i]);
  double l = 0, r = 6000;
  while (r - l > eps) {
    double mid = (l + r) / 2;
    if (check(mid))
      r = mid;
    else
      l = mid;
  }
  printf("%f\n", l);
  return 0;
}
