#include<stdio.h>
long c,n,i,x[100005],y[100005],stt,drr,l,prim[100005],st[100005],dr[100005],ult[100005],poz[100005],a,b,aa,bb,m,ab,mij,mijj,sum;
long partit(long a[ ],long b[ ],long st, long dr)
{long i,j,m,piv,aa;
m=(st+dr)/2;
piv=b[m];
i=st-1;
j=dr+1;
while(1)
{do{++i;} while(b[i]<piv);
do{--j;} while(b[j]>piv);
if (i<j)
{aa=a[i];a[i]=a[j];a[j]=aa;aa=b[i];b[i]=b[j];b[j]=aa;}
else
return j;
}
}
void quicks(long a[ ],long b[ ],long st,long dr)
{long p;
if (st<dr)
{p=partit(a,b,st,dr);
quicks(a,b,st,p);
quicks(a,b,p+1,dr);
}
}
int main()
{
freopen("gropi.in","r",stdin);
freopen("gropi.out","w",stdout);
scanf("%ld%ld",&c,&n);
for(i=1;i<=n;++i)
scanf("%ld%ld",&x[i],&y[i]);
quicks(x,y,1,n);
stt=0;
l=1;
x[n+1]=c+1;
prim[l]=y[1];
for(i=2;i<=n+1;++i)
if(x[i]!=x[i-1]){st[l]=stt;dr[l]=x[i]-1;poz[l]=x[i-1];ult[l]=y[i-1];++l;stt=x[i]-1;prim[l]=y[i];}
--l;
scanf("%ld",&m);
for(i=1;i<=m;++i)
{scanf("%ld%ld%ld%ld",&a,&b,&aa,&bb);
if(bb<b){ab=bb;bb=b;b=ab;ab=aa;aa=a;a=ab;}
stt=1;drr=l;
while(stt<=drr)
{mij=(stt+drr)/2;
if(st[mij]<=b&&dr[mij]>=b)break;
if(st[mij]>b)drr=mij-1;
else stt=mij+1;}
stt=1;drr=l;
while(stt<=drr)
{mijj=(stt+drr)/2;
if(st[mijj]<=bb&&dr[mijj]>=bb)break;
if(st[mijj]>bb)drr=mijj-1;
else stt=mijj+1;}
sum=bb-b+1+mijj-mij-2;
if(ult[mij]>=b)
if(a==poz[mij])
sum+=2;
else ++sum;
else if(a!=poz[mijj])++sum;
if(prim[mijj]<=bb)
if(aa==poz[mijj])
sum+=2;
else ++sum;
else if(aa!=poz[mijj])++sum;
printf("%ld\n",sum);}
return 0;
}