#include <bits/stdc++.h>
using namespace std;
float dist(float dx, float dy) { return dx * dx + dy * dy; }
float dist(int Ax, int Ay, int Dx, int Dy, float t) {
  return dist(Ax + t * Dx, Ay + t * Dy);
}
int main() {
  int N, d1, d2, answer = 0;
  cin >> N >> d1 >> d2;
  d1 = d1 * d1;
  d2 = d2 * d2;
  int Ax[N], Ay[N], Bx[N], By[N];
  for (int i = 0; i < N; i++) cin >> Ax[i] >> Ay[i] >> Bx[i] >> By[i];
  float faraway = dist(Bx[0] - Ax[0], By[0] - Ay[0]);
  if (faraway <= d1) answer++;
  for (int i = 1; i < N; i++) {
    int Cx = Bx[i - 1] - Ax[i - 1];
    int Cy = By[i - 1] - Ay[i - 1];
    int Dx = Bx[i] - Ax[i] - Cx;
    int Dy = By[i] - Ay[i] - Cy;
    float D0 = dist(Cx, Cy);
    float mid = 0.0;
    if (Dx != 0 || Dy != 0) {
      mid = -(Dx * Cx + Dy * Cy) / (float)(Dx * Dx + Dy * Dy);
      if (mid < 0.0) mid = 0.0;
      if (mid > 1.0) mid = 1.0;
    }
    float Dm = dist(Cx, Cy, Dx, Dy, mid);
    float D1 = dist(Cx + Dx, Cy + Dy);
    if (((answer == 0) || faraway >= d2) && Dm <= d1) {
      answer++;
      faraway = Dm;
    } else if (((answer == 0) || faraway >= d2) && D1 <= d1) {
      answer++;
      faraway = D1;
    }
    faraway = max(faraway, max(Dm, D1));
  }
  cout << answer << endl;
}
