#include<bits/stdc++.h>
#define db double
using namespace std;
const int N = 1e3 + 10;
mt19937 myrand(time(0));
int n, m;
struct node{
db x, y;
}a[20], b[N], as, now;
db r[20], sumx, sumy, R;
db ans, del, ans_now;
db dis(node a, node b){
return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
db calc(node x){
db ans = 0;
db now_r = R;
for(int i = 1; i <= n; ++i){
now_r = min(now_r, dis(a[i], x) - r[i]);
}
for(int i = 1; i <= m; ++i){
if(now_r >= dis(x, b[i])) ++ans;
}
return ans;
}
void input(){
cin >> n >> m >> R;
for(int i = 1; i <= n; ++i) cin >> a[i].x >> a[i].y;
for(int i = 1; i <= m; ++i) cin >> b[i].x >> b[i].y, sumx += b[i].x, sumy += b[i].y;
}
void op(int i){
db T = 2333, delta = 0.996;
as = {sumx / m, sumy / m};
while(T > 1e-12){
now = {as.x + ((rand() << 1) - RAND_MAX) * T, as.y + ((rand() << 1) - RAND_MAX) * T};
ans_now = calc(now);
del = ans - ans_now;
if(del < 0){
as = now;
ans = ans_now;
}
T = T * delta;
}
}
int main(){
srand(1e9 + 7);
input();
for(int i = 1; i <= 6; ++i)op(i);
printf("%0.0lf",ans);
return 0;
}