#include <bits/stdc++.h>
using namespace std;
inline double dist(vector<long long int> &a) {
  double res;
  res = ((a[0] - a[2]) * (a[0] - a[2]) + (a[1] - a[3]) * (a[1] - a[3]));
  return res;
}
inline pair<double, double> find(vector<long long int> &a,
                                 vector<long long int> &b) {
  long long int vx = b[2] - b[0] - a[2] + a[0];
  long long int vy = b[3] - a[3] - b[1] + a[1];
  long long int x1 = -a[0] + a[2];
  long long int y1 = -a[1] + a[3];
  long long int x2 = x1 + vx;
  long long int y2 = y1 + vy;
  double d11 = ((b[2] - b[0]) * (a[1] - a[3]) - (b[3] - b[1]) * (a[0] - a[2]));
  double d22 = (vx * vx + vy * vy);
  d11 = d11 * d11;
  if (d22 == 0) return {-1.0, -1.0};
  d11 /= d22;
  long long int dot1 = vx * x1 + vy * y1;
  long long int dot2 = vx * x2 + vy * y2;
  double e1 = x1 * x1 + y1 * y1;
  double e2 = x2 * x2 + y2 * y2;
  d22 = max(e1, e2);
  if (dot1 * dot2 > 0) {
    d11 = min(e1, e2);
  }
  return {d11, d22};
}
int main() {
  long long int n;
  cin >> n;
  long long int d1, d2;
  cin >> d1 >> d2;
  d1 = d1 * d1;
  d2 = d2 * d2;
  vector<vector<long long int> > arr(n, vector<long long int>(4));
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < 4; ++j) {
      cin >> arr[i][j];
    }
  }
  bool flag2 = 1;
  long long int res = 0;
  double prev = dist(arr[0]);
  if (prev <= d1) {
    res++;
    flag2 = 0;
  }
  for (int i = 1; i < n; ++i) {
    pair<double, double> curr = find(arr[i], arr[i - 1]);
    if (curr.first == -1) continue;
    if (curr.first <= d1 && flag2) {
      res++;
      flag2 = 0;
    } else if (curr.second > d2)
      flag2 = 1;
    if (dist(arr[i]) > d2) flag2 = 1;
  }
  cout << res << "\n";
  return 0;
}
