#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
const double EPS = 1e-8;
struct Point {
  double x, y;
};
inline Point operator+(const Point &a, const Point &b) {
  return {a.x + b.x, a.y + b.y};
}
inline Point operator-(const Point &a, const Point &b) {
  return {a.x - b.x, a.y - b.y};
}
inline Point operator*(const Point &a, double b) { return {a.x * b, a.y * b}; }
inline Point operator/(const Point &a, double b) { return {a.x / b, a.y / b}; }
inline double cross(const Point &a, const Point &b) {
  return a.x * b.y - a.y * b.x;
}
inline double dot(const Point &a, const Point &b) {
  return a.x * b.x + a.y * b.y;
}
inline double dis(const Point &a) { return sqrt(dot(a, a)); }
inline double polar(const Point &a) { return atan2(a.y, a.x); }
inline Point unit(const Point &a) { return a / dis(a); }
Point p, q;
struct Circle {
  Point a;
  double r;
};
int n, l;
Circle a[N];
pair<Point, Point> intersect(Circle a, Circle b) {
  double d = dis(a.a - b.a);
  double x = (a.r * a.r + d * d - b.r * b.r) / (d * 2);
  double z = sqrt(a.r * a.r - x * x);
  Point offset = unit(b.a - a.a), mid = a.a + offset * x;
  swap(offset.x, offset.y);
  offset.x *= -1;
  return {mid + offset * z, mid - offset * z};
}
bool check(double mid) {
  Circle o = {p, mid};
  vector<pair<double, int>> ret;
  int idx = 0;
  for (int i = 1; i <= n; i++) {
    double d = dis(o.a - a[i].a);
    if (o.r + a[i].r > d && abs(o.r - a[i].r) < d) {
      ++idx;
      auto tmp = intersect(o, a[i]);
      ret.push_back({polar(tmp.first - o.a), idx});
      ret.push_back({polar(tmp.second - o.a), idx});
    }
  }
  sort(ret.begin(), ret.end());
  static int stk[N * 2];
  int top = 0;
  for (auto &i : ret) {
    if (stk[top] == i.second)
      --top;
    else
      stk[++top] = i.second;
  }
  return top;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  scanf("%d%d", &n, &l);
  p = {double(l), 0};
  q = {double(-l), 0};
  for (int i = 1; i <= n; i++) {
    scanf("%lf%lf", &a[i].a.x, &a[i].a.y);
    a[i].r = dis(a[i].a - q);
  }
  double l = 0, r = dis(p - q);
  while (r - l >= EPS) {
    double mid = (l + r) / 2;
    if (check(mid))
      r = mid;
    else
      l = mid;
  }
  printf("%.8lf", r);
  return 0;
}
