#include <bits/stdc++.h>
using namespace std;
const int N=2*1e5+50;
int root,lc[2*N],rc[2*N],l[N],r[N],nc;
vector<int>L[2*N];
vector<int>R[2*N];
void Build(int &c,int ss,int se)
{
	nc++;
	c=nc;
	if(ss==se)
	{
		L[c].push_back(l[ss]);
		R[c].push_back(r[ss]);
		/*printf("%i %i: ",ss,se);
		for(auto i:R[c])
		{
			printf("%i ",i);
		}
		printf("\n");*/
		return;
	}
	int mid=(ss+se)/2;
	Build(lc[c],ss,mid);
	Build(rc[c],mid+1,se);
	int n=L[lc[c]].size(),m=L[rc[c]].size(),j=0;
	for(int i=0;i<=n;i++)
	{
		if(i==n)
		{
			while(j<m)
			{
				L[c].push_back(L[rc[c]][j]);
				j++;
			}
			continue;
		}
		if(j>=m)
		{
			L[c].push_back(L[lc[c]][i]);
			continue;
		}
		if(L[lc[c]][i]<=L[rc[c]][j])
		{
			L[c].push_back(L[lc[c]][i]);
			continue;
		}
		while(j<m && L[rc[c]][j]<L[lc[c]][i])
		{
			L[c].push_back(L[rc[c]][j]);
			j++;
		}
		L[c].push_back(L[lc[c]][i]);
	}
	j=0;
	for(int i=0;i<=n;i++)
	{
		if(i==n)
		{
			while(j<m)
			{
				R[c].push_back(R[rc[c]][j]);
				j++;
			}
			continue;
		}
		if(j>=m)
		{
			R[c].push_back(R[lc[c]][i]);
			continue;
		}
		if(R[lc[c]][i]<=R[rc[c]][j])
		{
			R[c].push_back(R[lc[c]][i]);
			continue;
		}
		while(j<m && R[rc[c]][j]<R[lc[c]][i])
		{
			R[c].push_back(R[rc[c]][j]);
			j++;
		}
		R[c].push_back(R[lc[c]][i]);
	}
	/*printf("%i %i: ",ss,se);
	for(auto i:R[c])
	{
		printf("%i ",i);
	}
	printf("\n");*/
}
int GetR(int c,int ss,int se,int qs,int qe,int x)
{
	if(qe<ss || se<qs)
	{
		return 0;
	}
	else if(qs<=ss && se<=qe)
	{
		int lb=lower_bound(R[c].begin(),R[c].end(),x)-R[c].begin();
		/*printf("%i %i: ",ss,se);
		for(auto i:R[c])
		{
			printf("%i ",i);
		}
		printf("\n%i\n",lb);*/
		return lb;
	}
	int mid=(ss+se)/2;
	return GetR(lc[c],ss,mid,qs,qe,x)+GetR(rc[c],mid+1,se,qs,qe,x);
}
int GetL(int c,int ss,int se,int qs,int qe,int x)
{
	if(qe<ss || se<qs)
	{
		return 0;
	}
	else if(qs<=ss && se<=qe)
	{
		int ub=upper_bound(L[c].begin(),L[c].end(),x)-L[c].begin();
		/*printf("%i %i: ",ss,se);
		for(auto i:L[c])
		{
			printf("%i ",i);
		}
		printf("\n%i %i\n",ub,L[c].size()-ub);*/
		return L[c].size()-ub;
	}
	int mid=(ss+se)/2;
	return GetL(lc[c],ss,mid,qs,qe,x)+GetL(rc[c],mid+1,se,qs,qe,x);
}
int main()
{
    int n,t;
    scanf("%i%i",&n,&t);#include <bits/stdc++.h>
using namespace std;
const int N=2*1e5+50;
const int inf=1e9+50;
int T[N],n;
int sum(int i)
{
	int sum=0;
	while(i>0)
	{
		sum+=T[i];
		i-=i&(-i);
	}
	return sum;
}
void add(int i,int k)
{
	while(i<=n)
	{
		T[i]+=k;
		i+=i&(-i);
	}
}
int main()
{
    int t;
    scanf("%i%i",&n,&t);
    int l[n+1],r[n+1];
    vector<pair<pair<int,int>,pair<int,int>>>b;
    for(int i=1;i<=n;i++)
	{
		scanf("%i%i",&l[i],&r[i]);
		b.push_back({{l[i],0},{0,i}});
	}
	int L[t+1],R[t+1],X[t+1];
	int LL[t+1],RR[t+1];
	for(int i=1;i<=t;i++)
	{
		scanf("%i%i%i",&L[i],&R[i],&X[i]);
		b.push_back({{X[i],L[i]},{R[i],i}});
	}
	sort(b.begin(),b.end());
	reverse(b.begin(),b.end());
	for(int i=0;i<b.size();i++)
	{
		int x=b[i].first.first,y=b[i].first.second,z=b[i].second.first,w=b[i].second.second;
		if(y==0)
		{
			add(w,1);
		}
		else
		{
			LL[w]=sum(z)-sum(y-1);
		}
	}
	while(!b.empty())
	{
		b.pop_back();
	}
	for(int i=1;i<=n;i++)
	{
		T[i]=0;
	}
	for(int i=1;i<=n;i++)
	{
		b.push_back({{r[i],inf},{0,i}});
	}
	for(int i=1;i<=t;i++)
	{
		b.push_back({{X[i],L[i]},{R[i],i}});
	}
	sort(b.begin(),b.end());
	for(int i=0;i<b.size();i++)
	{
		int x=b[i].first.first,y=b[i].first.second,z=b[i].second.first,w=b[i].second.second;
		if(z==0)
		{
			add(w,1);
		}
		else
		{
			RR[w]=sum(z)-sum(y-1);
		}
	}
	for(int i=1;i<=t;i++)
	{
		printf("%i\n",R[i]-L[i]+1-LL[i]-RR[i]);
	}
	/*for(int i=1;i<=t;i++)
	{
		printf("%i\n",RR[i]);
	}*/
    return 0;
}

    for(int i=1;i<=n;i++)
	{
		scanf("%i%i",&l[i],&r[i]);
	}
	Build(root,1,n);
	while(t--)
	{
		int LL,RR,X;
		scanf("%i%i%i",&LL,&RR,&X);
		int a=GetL(1,1,n,LL,RR,X),b=GetR(1,1,n,LL,RR,X);
		printf("%i\n",RR-LL+1-a-b);
	}
    return 0;
}