#include "bits/stdc++.h"
using namespace std;

int treasure[5002][5002];
int x[5000];int y[5000];
int cpx[5000]; int cpy[5000];
map<int,int> xind;
map<int,int> yind;
int main()
{
	fill(treasure[0],treasure[5000],0);
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		cin>>x[i]>>y[i];
		cpx[i]=x[i];
		cpy[i]=y[i];
	}
	sort(cpx,cpx+n);
	sort(cpy,cpy+n);
	for(int i=0;i<n;i++)
	{
		xind[cpx[i]]=i;
		yind[cpy[i]]=i;
	}
	//座圧した座標で累積和
	for(int i=0;i<n;i++)
		treasure[xind[x[i]]+1][yind[y[i]]+1]++;
	//累積和
	//横
	for(int i=1;i<5002;i++)
	{
		for(int j=1;j<5002;j++)
			treasure[i][j]+=treasure[i][j-1];
	}
	//縦
	for(int i=1;i<5002;i++)
	{
		for(int j=1;j<5002;j++)
			treasure[i][j]+=treasure[i-1][j];
	}
	// for(int i=0;i<n+1;i++)
	// {
	// 	for(int j=0;j<n+1;j++)
	// 		cerr<<treasure[i][j]<<" ";
	// 	cerr<<endl;
	// }
	//クエリ
	for(int i=0;i<m;i++)
	{
		int a,b,c,d;
		cin>>a>>b>>c>>d;
		a--;b--;
		int aind,bind,cind,dind;
		aind=upper_bound(cpx,cpx+n,a)-cpx;
		if(a<*(cpx+aind))
			aind--;
		bind=upper_bound(cpy,cpy+n,b)-cpy;
		if(b<*(cpy+bind))
			bind--;
		cind=upper_bound(cpx,cpx+n,c)-cpx;
		dind=upper_bound(cpy,cpy+n,d)-cpy;
		aind++;bind++;
		//cerr<<aind<<" "<<bind<<" "<<cind<<" "<<dind<<endl;
		int ans=treasure[cind][dind]-treasure[cind][bind]-treasure[aind][dind]+treasure[aind][bind];
		cout<<ans<<endl;
	}
	return 0;
}
