#include<bits/stdc++.h>
using namespace std;
double ene[1009][4];
double buil[19][4];
double ans=0;
double n,m,r;
double dis(double x, double y, double xx, double yy){
return sqrt((x - xx) * (x - xx) + (y - yy) * (y - yy));
}
double rand(double l,double r){
return (double)rand()/RAND_MAX*(r-l)+l;
}
double calc(double x, double y){
double res=0,d=r;
for(int i=1;i<=n;i++){
d=min(d,dis(x,y,buil[i][0],buil[i][1])-buil[i][2]);
}
for(int i=1;i<=m;i++){
double a=dis(x,y,ene[i][0],ene[i][1]);
if(a<=d){
res++;
}
}
ans=max(ans,res);
return res;
}
double ax=0,ay=0;
void simulate_anneal(){
double x=ax/m,y=ay/m;
for(double t=2605;t>=1e-12;t*=0.9982){
double xx = x + ((rand() << 1) - RAND_MAX)*t;
double yy = y + ((rand() << 1) - RAND_MAX)*t;
double dt=calc(xx,yy)-ans;
if(dt>0) x=xx,y=yy;
else if(exp(-dt/t)<(double)rand()/RAND_MAX) x=xx,y=yy;
}
}
int main(){
scanf("%lf%lf%lf",&n,&m,&r);
for(int i=1;i<=n;i++){
scanf("%lf%lf%lf",&buil[i][0],&buil[i][1],&buil[i][2]);
}
for(int i=1;i<=m;i++){
scanf("%lf%lf",&ene[i][0],&ene[i][1]);
ax+=ene[i][0],ay+=ene[i][1];
}
for(int i=1;i<=4;i++){
simulate_anneal();
}
printf("%.0lf",ans);
return 0;
}