#include<bits/stdc++.h>
#define pb push_back
#define F first
#define S second
using namespace std;
typedef long long ll;
typedef pair<int,int>pi;
typedef vector<int>vi;
const int maxn=1e6+10;
const int M=998244353;
ll t[1<<14][105];
ll d[105][105],d2[105][14],d22[14][14];
ll mind[1<<14][105],mind2[1<<14][14];
ll xa[105],ya[105],xb[105],yb[105],T[105],ans;
struct node{
    ll x,y,t;
}A[205];
bool cmp(node u,node v){return u.t<v.t;}
void Min(ll &x,ll y){if (y<x)x=y;}
int n,m,f[1<<14][105];
const ll inf=1e14;
int main(){
    cin >> m >> n;
    for (int i=0;i<m;i++) cin >> xb[i] >> yb[i];
    for (int i=0;i<n;i++) cin >> A[i].x >> A[i].y >> A[i].t;
    sort(A,A+n,cmp);
    for (int i=0;i<n;i++) xa[i]=A[i].x,ya[i]=A[i].y,T[i]=A[i].t;
    for (int i=0;i<n;i++)
        for (int j=0;j<n;j++)
            d[i][j]=abs(xa[i]-xa[j])+abs(ya[i]-ya[j]);
    for (int i=0;i<n;i++)
        for (int j=0;j<m;j++)
            d2[i][j]=abs(xa[i]-xb[j])+abs(ya[i]-yb[j]);
    for (int i=0;i<m;i++)
        for (int j=0;j<m;j++)
            d22[i][j]=abs(xb[i]-xb[j])+abs(yb[i]-yb[j]);
    for (int i=0;i<n;i++)
    for (int j=0;j<(1<<m);j++){
        mind[j][i]=inf;
        for (int k=0;k<m;k++) if ((j>>k)&1) Min(mind[j][i],d2[i][k]);
    }
    for (int i=0;i<m;i++)
    for (int j=0;j<(1<<m);j++){
        mind2[j][i]=inf;
        for (int k=0;k<m;k++) if ((j>>k)&1) Min(mind2[j][i],d22[i][k]);
    }
    memset(f,-1,sizeof(f));
    for (int i=0;i<n;i++) f[0][i]=1;
    for (int i=0;i<=n;i++)
        for (int j=0;j<(1<<m);j++)
            t[j][i]=inf;
    for (int i=0;i<m;i++) t[1<<i][0]=0;
    int ans=0;
    for (int mask=0;mask<(1<<m);mask++){
        for (int j=0;j<=n;j++) if (t[mask][j]<inf){
            for (int i=0;i<m;i++) if (!((mask>>i)&1)){
                Min(t[mask|1<<i][j],t[mask][j]+mind2[mask][i]);
            }
            for (int i=0;i<n;i++) if (t[mask][j]+mind[mask][i]<=T[i]){
                f[mask][i]=max(f[mask][i],j+1);
            }
        }
        for (int i=0;i<n;i++) if (f[mask][i]!=-1){
            int k=f[mask][i];
            ans=max(ans,k);
            for (int j=0;j<m;j++) if (!((mask>>j)&1)){
                Min(t[mask|1<<j][k],T[i]+min(d2[i][j],mind2[mask][j]));
            }
            for (int j=i+1;j<n;j++) if (min(d[i][j],mind[mask][j])+T[i]<=T[j]){
                f[mask][j]=max(f[mask][j],k+1);
            }
        }
    }
    cout << ans << endl;
}
