#include<stdio.h>
#include<math.h>
#include<iostream>
using namespace std;
const double eps = 1e-6;
const int maxn = 5e5+5;
struct Point{
double x,y;
Point (double _x = 0,double _y = 0): x(_x),y(_y){}
Point operator -(const Point &op2) const{
return Point(x - op2.x, y - op2.y);
}
double operator ^(const Point &op2) const{
return x*op2.y - y*op2.x;
}
};
double dis(Point a,Point b){
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
double mul(Point p0,Point p1,Point p2){
return (p1-p0)^(p2-p0);
}
int n;
double r;
Point p[maxn],cp;
void solve(){
while(~scanf("%lf%lf%lf",&cp.x,&cp.y,&r) && r>=0){
scanf("%d",&n);
int ans = 0;
for(int i=0;i<n;i++) scanf("%lf%lf",&p[i].x,&p[i].y);
for(int i=0;i<n;i++){
int tmp = 0;
for(int j=0;j<n;j++){
if(dis(p[j],cp)-r<=eps){
if(mul(cp,p[i],p[j])>=-eps){
tmp++;
}
}
}
ans = max(tmp,ans);
}
printf("%d\n",ans);
}
}
int main(){
solve();
return 0;
}