#include using namespace std; vector> event; int main() { long long n, r, a, b; scanf("%lld%lld%lld%lld", &n, &r, &a, &b); long double max_len = sqrtl((long double)(a * a + b * b)); for(int i = 0; i < n; i++){ long long x, y; scanf("%lld%lld", &x, &y); long double lambda = (x * a + y * b) / (long double)(a * a + b * b); long double tx = a * lambda; long double ty = b * lambda; long double len = sqrtl((tx - x) * (tx - x) + (ty - y) * (ty - y)); if (len > (long double)r) continue; long double len_line = sqrtl(r * r - len * len) + 0.0008; long double len_origin = sqrtl(tx * tx + ty * ty); if (lambda < 0) len_origin *= -1; if (len_origin - len_line > max_len) continue; if (len_origin + len_line < 0) continue; event.push_back(make_pair(max((long double) -0.0008, len_origin - len_line), 1)); event.push_back(make_pair(min(max_len + 0.0008, len_origin + len_line), -1)); } sort(event.begin(), event.end()); int num = 0, ans = 0; for(int i = 0; i < (int)event.size(); i++){ if(event[i].second == 1){ num++; } else{ num--; } ans = max(ans, num); } printf("%d\n", ans); return 0; }