#include <bits/stdc++.h>
using namespace std;
struct Point {
  int x, y;
} epicentre, pt[101];
int N, K, E;
double dis[101], p[101], dp[101][101];
double Distance(const Point &a, const Point &b) {
  return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y) + 0.0);
}
double calculate(double R) {
  for (int i = 1; i <= N; ++i) {
    if (dis[i] <= R)
      p[i] = 1;
    else
      p[i] =
          pow(2.7182818284590452353602874713527, 1 - dis[i] * dis[i] / (R * R));
  }
  dp[0][0] = 1;
  for (int i = 1; i <= N; ++i) dp[i][0] = dp[i - 1][0] * (1 - p[i]);
  for (int i = 1; i <= N; ++i) {
    for (int j = 1; j <= i; ++j) {
      dp[i][j] = dp[i - 1][j - 1] * p[i];
      if (j < i) dp[i][j] += dp[i - 1][j] * (1 - p[i]);
    }
  }
  double ans = 0;
  for (int i = 0; i < K; ++i) ans += dp[N][i];
  return ans;
}
void solve() {
  double mid, right = 100000, left = 0;
  while (right - left > 1e-7) {
    mid = (left + right) / 2;
    if (calculate(mid) * 1000 < E)
      right = mid;
    else
      left = mid;
  }
  printf("%.7f\n", right);
}
int main() {
  scanf("%d", &N);
  scanf("%d%d", &K, &E);
  scanf("%d%d", &epicentre.x, &epicentre.y);
  for (int i = 1; i <= N; ++i) {
    scanf("%d%d", &pt[i].x, &pt[i].y);
    dis[i] = Distance(pt[i], epicentre);
  }
  solve();
  return 0;
}
