#include <bits/stdc++.h>
long long mpow(long long a, long long n, long long mod) {
  long long ret = 1;
  long long b = a;
  while (n) {
    if (n & 1) ret = (ret * b) % mod;
    b = (b * b) % mod;
    n >>= 1;
  }
  return (long long)ret;
}
using namespace std;
pair<int, int> pts[(int)(1e2 + 25)];
int n, k, e, ix, iy;
double dp[(int)(1e2 + 25)][(int)(1e2 + 25)];
double prob[(int)(1e2 + 25)];
double dis(int x1, int y1, int x2, int y2) {
  return sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
}
bool chk(double x) {
  for (int i = 0; i <= n; i++) {
    for (int j = 0; j <= n; j++) {
      dp[i][j] = 0.0;
    }
  }
  for (int i = 1; i <= n; i++) {
    double d = dis(ix, iy, pts[i].first, pts[i].second);
    if (d < x)
      prob[i] = 1;
    else if (d > x * 1000.0)
      prob[i] = 0;
    else {
      prob[i] = exp(1 - (d * d) / (x * x));
    }
  }
  dp[0][0] = 1.0;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j <= i; j++) {
      dp[i][j + 1] += dp[i - 1][j] * prob[i];
      dp[i][j] += dp[i - 1][j] * (1 - prob[i]);
    }
  }
  double sum = 0.0;
  for (int i = 0; i < k; i++) {
    sum += dp[n][i];
  }
  return sum <= (e / 1000.0);
}
void solve() {
  scanf("%d", &n);
  scanf("%d", &k);
  scanf("%d", &e);
  scanf("%d", &ix);
  scanf("%d", &iy);
  double lo = 0, hi = 10000.0;
  for (int i = 1; i <= n; i++) {
    scanf("%d", &pts[i].first);
    scanf("%d", &pts[i].second);
  }
  double eps = 0.0000001;
  while (hi - lo > eps) {
    double mid = (lo + hi) / 2.0;
    if (chk(mid)) {
      hi = mid;
    } else {
      lo = mid;
    }
  }
  cout << fixed << setprecision(10) << lo;
}
int main() {
  int t = 1;
  for (int i = 1; i <= t; i++) {
    solve();
  }
  return 0;
}
