#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); long double len_origin = sqrtl(tx * tx + ty * ty); event.push_back(make_pair(max((long double) 0.0, len_origin - len_line) - 0.0005, 1)); event.push_back(make_pair(min(max_len, len_origin + len_line) + 0.0005, -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; }