#include using namespace std; #define rep(i, a, b) for(int i = a;i < (b);++i) #define sz(x) (int)(x).size() typedef vector vi; template struct Point { typedef Point P; T x,y; bool operator<(P p)const {return tie(x,y) < tie(p.x, p.y);} P operator*(T d) const {return P(x*d, y*d);} P operator+(P p) const {return P(x + p.x, y + p.y);} P operator-(P p) const {return P(x - p.x, y - p.y);} explicit Point(T x = 0, T y = 0) : x(x), y(y) {} T dot(P p) const {return x * p.x + y * p.y;} T cross(P p) const {return x * p.y - y * p.x;} T dist2() const {return x * x + y * y;} T dist() const {return sqrt(dist2());} P unit() const { return *this*(1/dist());} }; template T proj(Point p1, Point on) { return p1.dot(on.unit()); } template double linDist(const P& a, const P& b, const P& p) { return (double)(b-a).cross(p-a)/(b-a).dist(); } using P = Point; int main() { ios_base::sync_with_stdio(0); double N, R, A, B; cin >> N >> R >> A >> B; if (A < 0) { A *= -1; B *= -1; } vector > > sweep; vector > points(N); for (int i = 0;i < N;i++) { double x,y; cin >> x >> y; double d = abs(linDist(P(0,0), P(A,B), P(x, y))); if (d > R) continue; double z = proj(P(x, y), P(A, B)); // cout << "RR-DD" << R * R - d * d << endl; double a = sqrt(R * R - d * d); double za = z - a; // cout << "za" << za << " z" << z << " a " << a << endl; P first = P(A, B).unit() * za; P second = first + P(A, B).unit() * a * 2; if (second < first) swap(first, second); //assert(first < second); // cout << i < ids; int res = 0; for(auto &i:sweep){ // cout << fixed << setprecision(16); // cout << i.first.x << " : " << i.first.y << endl; // cout << i.second.first << " | " << i.second.second<