#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void chkmin(T &a, T b) {
  if (a > b) a = b;
}
template <class T>
inline void chkmax(T &a, T b) {
  if (a < b) a = b;
}
int N, K;
double eps;
double x[110], y[110], p[110], d[110];
double dp[110][110];
bool possible(double r) {
  double p, res;
  int i, k;
  memset(dp, 0, sizeof(dp));
  dp[0][0] = 1;
  for (i = 1; i <= N; i++)
    for (k = 0; k <= i; k++) {
      p = d[i] < r ? 1 : exp(1 - d[i] * d[i] / (r * r));
      dp[i][k] = dp[i - 1][k - 1] * p + dp[i - 1][k] * (1 - p);
    }
  res = 0;
  for (i = K; i <= N; i++) res += dp[N][i];
  return 1 - res < eps;
}
int main() {
  int i;
  double high, low, mid;
  scanf("%d", &N);
  scanf("%d%lf", &K, &eps);
  eps /= 1000;
  for (i = 0; i <= N; i++) scanf("%lf%lf", &x[i], &y[i]);
  for (i = 1; i <= N; i++) d[i] = hypot(x[i] - x[0], y[i] - y[0]);
  high = 10000;
  low = 0;
  for (i = 0; i < 50; i++) {
    mid = (high + low) / 2;
    if (possible(mid))
      high = mid;
    else
      low = mid;
  }
  printf("%.10lf\n", low);
  return 0;
}
