#include <stdio.h>
#define cmax 1000
#define input "gropi.in"
#define output "gropi.out"
long x[cmax],y[cmax],x1[cmax],x2[cmax],y1[cmax],y2[cmax];
long c,l,col,m,i,p,lung,xi,xf,yi,yf,n,aux,k;
void merge(long ls,long ld)
{
int k,i1,i2,k1,k2,i;
if (ls<ld)
{
k=(ls+ld)/2;
merge(ls,k);
merge(k+1,ld);
k1=0; k2=0;
for (i=ls;i<=k;i++)
{k1++; x1[k1]=x[i]; y1[k1]=y[i];}
for (i=k+1;i<=ld;i++)
{k2++; x2[k2]=x[i]; y2[k2]=y[i];}
i1=1; i2=1; k=ls-1;
while (i1<=k1 && i2<=k2)
if (y1[i1]<y2[i2])
{k++; y[k]=y1[i1]; x[k]=x1[i1]; i1++;}
else
{k++; y[k]=y2[i2]; x[k]=x2[i2]; i2++;}
while (i1<=k1)
{k++; y[k]=y1[i1]; x[k]=x1[i1]; i1++;}
while (i2<=k2)
{k++; y[k]=y2[i2]; x[k]=x2[i2]; i2++;}
}
}
int main()
{
freopen(input,"r",stdin);
freopen(output,"w",stdout);
scanf("%ld %ld",&c,&m);
for (i=1;i<=m;i++)
scanf("%ld %ld",&x[i],&y[i]);
merge(1,m);
scanf("%ld",&n);
for (p=1;p<=n;p++)
{
scanf("%ld %ld %ld %ld",&xi,&yi,&xf,&yf);
if (yi>yf)
{aux=xi; xi=xf; xf=aux; aux=yi; yi=yf; yf=aux;}
lung=1;
l=xi; col=yi; k=1;
y[m+1]=c+1;
while (col<=yf)
if (y[k]<=col) k++;
else
if (y[k]>col && y[k]<=yf)
{
lung+=y[k]-col;
col=y[k];
if (x[k]==l)
{l=3-x[k]; lung++;}
k++;
}
else
if (y[k]>col && y[k]>yf)
{
lung+=yf-col;
col=yf+1;
if (xf!=l)
{l=3-xf; lung++;}
}
printf("%ld\n",lung);
}
return 0;
}