#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define N 15
#define M 105
#define K (1 << 14)
struct Node
{
	int x, y;
	Node() {}
	Node(int _x, int _y) {x = _x, y = _y;}
};
int Dis(Node a, Node b) {return abs(a.x - b.x) + abs(a.y - b.y);}
Node P[N];
int n, m;
struct Data
{
	int t;
	Node p;
	Data() {}
	Data(int _t, Node _p) {t = _t, p = _p;}
}A[M];
int mlg[K];
int F[M][K], G[M][K];
int D0[N][K], D1[M][K];
int lowbit(int x) {return x & (-x);}
bool cmp(Data a, Data b){return a.t < b.t;}
int main()
{
	scanf("%d%d", &n, &m);
	for(int i = 0, x, y; i < n; i++)
		scanf("%d%d", &x, &y), P[i] = Node(x, y);
	for(int i = 1, x, y, t; i <= m; i++)
	{
		scanf("%d%d%d", &x, &y, &t);
		A[i] = Data(t, Node(x, y));
	}
	sort(A + 1, A + m + 1, cmp);
	int S = (1 << n) - 1;
	for(int i = 1; i < n; i++)
		mlg[1 << i] = i;
	for(int i = 0; i < n; i++)
		D0[i][0] = 0x3f3f3f3f;
	for(int i = 1; i <= S; i++)
		for(int j = 0; j < n; j++)
			if(!((i >> j) & 1))
				D0[j][i] = min(D0[j][i ^ lowbit(i)], Dis(P[j], P[mlg[lowbit(i)]]));
	for(int i = 1; i <= m; i++)
	{
		D1[i][0] = 0x3f3f3f3f;
		for(int j = 1; j <= S; j++)
			D1[i][j] = min(D1[i][j ^ lowbit(j)], Dis(A[i].p, P[mlg[lowbit(j)]]));
	}
	memset(F, -0x3f, sizeof(F));
	memset(G, 0x3f, sizeof(G));
	for(int i = 1; i <= m; i++)
		F[i][0] = 1;
	G[0][0] = 0;
	for(int j = 0; j < n; j++)
		G[0][1 << j] = 0;
	int ans = 0;
	for (int i = 0; i <= S; i++)
	{
		for (int j = 0; j < n; j++)
			if ((i >> j) & 1)
				for(int k = 0; k <= m; k++)
					G[k][i] = min(G[k][i], G[k][i ^ (1 << j)] + D0[j][i ^ (1 << j)]);
		for(int j = 1; j <= m; j++)
		{
			for(int k = 0; k < j; k++)
				if(G[k][i] + D1[j][i] <= A[j].t)
					F[j][i] = max(F[j][i], k + 1);
			for(int k = j - 1; k >= 1; k--)
				if(min(Dis(A[j].p, A[k].p), D1[j][i]) <= A[j].t - A[k].t)
					F[j][i] = max(F[j][i], F[k][i] + 1);
			if(F[j][i] < 0) continue;
			for(int k = 0; k < n; k++)
				if(!((i >> k) & 1))
					G[F[j][i]][i ^ (1 << k)] = min(G[F[j][i]][i ^ (1 << k)], A[j].t + min(Dis(A[j].p, P[k]), D0[k][i]));
			ans = max(ans, F[j][i]);
		}
	}
	printf("%d\n", ans);
}
