#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);
    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;
}