#include <bits/stdc++.h>
#define maxn 20
#define maxm 220
#define maxs 16550
#define ll long long
using namespace std;
void ton(ll &a,ll b){a=min(a,b);}
void tox(ll &a,ll b){a=max(a,b);}

int n,m,X[maxn],Y[maxn];
ll diss[maxs][maxm],dis[maxm][maxm],f[maxs][maxm],g[maxs][maxm];
struct DOT{
	int x,y,t;
	bool operator<(const DOT &W) const {return t<W.t;}
}d[maxm];

int main()
{
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;i++) scanf("%d%d",&X[i],&Y[i]),d[i+m]={X[i],Y[i]};
	for(int i=0;i<m;i++) scanf("%d%d%d",&d[i].x,&d[i].y,&d[i].t);
	sort(d,d+m);
	for(int i=0;i<m;i++) for(int j=0;j<m+n;j++) dis[i][j]=abs(d[i].x-d[j].x)+abs(d[i].y-d[j].y);
	for(int s=0;s<1<<n;s++)
		for (int i=0;i<m+n;i++)
		{
			diss[s][i]=1e18;
			for(int j=0;j<n;j++) if(s>>j&1) ton(diss[s][i],abs(X[j]-d[i].x)+abs(Y[j]-d[i].y));
		}
	
	memset(f,63,sizeof f),memset(g,192,sizeof g);
	for(int i=0;i<n;i++) f[1<<i][0]=0;
	for(int i=0;i<m;i++) g[0][i]=1;
	for(int s=0;s<1<<n;s++)
	{
		for(int i=0;i<m;i++)
		{
			for(int j=i;~j;j--) if(f[s][j]+diss[s][i]<=d[i].t){ tox(g[s][i],j+1);break; }
			for(int j=0;j<i;j++) if(d[j].t+dis[j][i]<=d[i].t) tox(g[s][i],g[s][j]+1);
			if (g[s][i]<0) continue; 
			ton(f[s][g[s][i]],d[i].t);
			for(int j=0;j<n;j++) if(s>>j&1^1) ton(f[s|1<<j][g[s][i]],d[i].t+dis[i][j+m]);
		}
		for(int i=0;i<=m;i++) for(int j=0;j<n;j++) if(s>>j&1^1) ton(f[s|1<<j][i],f[s][i]+diss[s][j+m]);
	}
	
	for(int i=m;i>=0;i--) for(int s=0;s<1<<n;s++) if(f[s][i]<1e18) return printf("%d\n",i),0;
	return 0;
}