#include<bits/stdc++.h>
using namespace std;
# define ll long long
# define read read1<ll>()
# define Type template<typename T>
Type T read1(){
	T t=0;
	char k;
	bool vis=0;
	do (k=getchar())=='-'&&(vis=1);while('0'>k||k>'9');
	while('0'<=k&&k<='9')t=(t<<3)+(t<<1)+(k^'0'),k=getchar();
	return vis?-t:t;
}
# define fre(k) freopen(k".in","r",stdin);freopen(k".out","w",stdout)
int s,m,f[1<<14][105],u[1<<14][14],v[1<<14][105];//S where sum
ll g[1<<14][105];//S sum time
pair<int,int>a[14];
struct Query{
	int x,y,t;
	bool operator <(const Query &b)const{return t<b.t;}
	pair<int,int> ret(){return make_pair(x,y);}
}q[105];
int dis(const pair<int,int> &x,const pair<int,int> &y){return abs(x.first-y.first)+abs(x.second-y.second);} 
int main(){
	s=read,m=read;
	for(int i=0;i<s;++i)a[i].first=read,a[i].second=read;
	for(int i=1;i<=m;++i)
		q[i].x=read,q[i].y=read,q[i].t=read;
	sort(q+1,q+m+1);
	for(int i=0;i<s;++i)u[0][i]=1e9;
	for(int i=1;i<=m;++i)v[0][i]=1e9;
	for(int i=0;i<s;++i)
		for(int j=0;j<s;++j)
			u[1<<i][j]=dis(a[i],a[j]);
	for(int i=0;i<s;++i)
		for(int j=1;j<=m;++j)
			v[1<<i][j]=dis(a[i],q[j].ret());
	for(int i=1;i<(1<<s);++i){
		int w=i&i-1,p=i&-i;if(!w)continue;
		for(int j=0;j<s;++j)
			u[i][j]=min(u[w][j],u[p][j]);
		for(int j=1;j<=m;++j)
			v[i][j]=min(v[w][j],v[p][j]);
	}memset(g,0x7f>>1,sizeof(g));const ll gMax=**g;
	memset(f,-1,sizeof(f));
	for(int i=0;i<s;++i)g[1<<i][0]=0;
	for(int i=1;i<=m;++i)f[0][i]=1;
	int ans=0;
	for(int i=0;i<(1<<s);++i){
		for(int k=0;k<=m;++k)
			if(g[i][k]!=gMax){
				ans=max(ans,k);
//				printf("g::%d %d %lld\n",i,k,g[i][k]);
				for(int j=0;j<s;++j)
					if(~i>>j&1)
						g[i|1<<j][k]=min(g[i|1<<j][k],g[i][k]+u[i][j]);
				for(int j=1;j<=m;++j)
					if(q[j].t>=g[i][k]+v[i][j])
						f[i][j]=max(f[i][j],k+1);
			}
		for(int k=1;k<=m;++k)
			if(~f[i][k]){
//				printf("f::%d %d %d\n",i,k,f[i][k]);
				ans=max(ans,f[i][k]);
				for(int j=0;j<s;++j)
					if(~i>>j&1)
						g[i|1<<j][f[i][k]]=min(g[i|1<<j][f[i][k]],min(dis(q[k].ret(),a[j]),u[i][j])+0ll+q[k].t);
				for(int j=k+1;j<=m;++j)
					if(q[j].t>=min(dis(q[k].ret(),q[j].ret()),v[i][j])+q[k].t)
						f[i][j]=max(f[i][j],f[i][k]+1);
			}
	}cout<<ans;
	return 0;
}
