//好笨啊啊啊
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
typedef long long LL;
const int maxn=(int)1e5 +10;
const int maxm=(int)2e4+10;
struct point{int x,y;};
multiset<int>mp[10001];
multiset<int>::iterator it,it1;
#define judge(x1,y1,x2,y2,r) ((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)<=r*r)
//bool judge(int x1,int y1,int x2,int y2,int r){
// // printf("%d %d
",x1,y1);
// return ((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)<=r*r);
//}
int main()
{
#ifdef shuaishuai
freopen("C:\Users\hasee\Desktop\a.txt","r",stdin);
//freopen("C:\Users\hasee\Desktop\b.txt","w",stdout);
#endif
int n,m;
int x,y,r;
scanf("%d",&n);
int ans=n;
for(int i=0;i<=10000;i++)mp[i].clear();
while(n--){
scanf("%d%d",&x,&y);
mp[x].insert(y);
}
scanf("%d",&m);
while(m--){
scanf("%d%d%d",&x,&y,&r);
int ll=max(0,x-r),rr=min(10000,x+r);
for(int i=ll;i<=rr;i++){
int len=sqrt(r*r-(i-x)*(i-x));
it=mp[i].lower_bound(y-len);
while(it!=mp[i].end()){
it1=it++;
if(judge(i,(*it1),x,y,r)){
// printf("%d %d
",i,*it1);
mp[i].erase(it1);
ans--;
}
else break;
}
}
}
printf("%d
",ans);
return 0;
}