# include<stdio.h>
# define input "zoo.in"
# define output "zoo.out"
# define max 16021
int n,i,j,m,x1,x2,y1,y2,b[max],x,y,h[17][max];
struct kkt
{
int x,y;
}a[max];
int divide(int st,int dr)
{
kkt aux;
int c;
aux = a[st];
c=a[st].x;
while(st < dr)
{
while(st < dr && a[dr].x >= c)dr--;
a[st] = a[dr];
while(st < dr && a[st].x <= c)st++;
a[dr] = a[st];
}
a[st] = aux;
return st;
}
void build(int nv,int l,int r)
{
if(l == r)
{h[nv][l] = a[l].y;return;}
int mij = (l+r)>>1,i,j,k;
if(mij >= l)
build(nv+1,l,mij);
if(mij+1 <= r)
build(nv+1,mij+1,r);
for(i = l,j=mij+1,k=l;i<=mij&&j<=r;)
if(h[nv+1][i] < h[nv+1][j])
h[nv][k++] = h[nv+1][i++];
else
h[nv][k++] = h[nv+1][j++];
while(i<=mij)
h[nv][k++] = h[nv+1][i++];
while(j<=r)
h[nv][k++] = h[nv+1][j++];
}
void qsort(int st,int dr)
{
int mij = divide(st,dr);
if(mij+1 < dr)qsort(mij+1,dr);
if(mij-1 > st)qsort(st,mij-1);
}
int search(int v[],int l,int r,int e)
{
int poz,step;
for(step=1;step<=(r-l+1);step<<=1);
for(poz = l-1;step;step>>=1)
if(step+poz <=r)if (v[poz + step] <= e)
poz+=step;
return poz;
}
int det_nr(int nv,int st,int dr)
{
if(x <= st && dr <= y)
{
if(y2 < h[nv][st] || y1 > h[nv][dr])
return 0;
if(y1 < h[nv][st] && y2 > h[nv][dr])
return dr-st+1;
return search(h[nv],st,dr,y2)-search(h[nv],st,dr,y1-1);
}
int t = 0,mij;
mij = (st+dr)>>1;
if(mij >= x)
t+=det_nr(nv+1,st,mij);
if(mij+1<=y)
t+=det_nr(nv+1,mij+1,dr);
return t;
}
int main()
{
freopen(input,"r",stdin);
freopen(output,"w",stdout);
scanf("%d",&n);
for(i = 1;i<=n;i++)
scanf("%d%d",&a[i].x,&a[i].y);
qsort(1,n);
for(i= 1;i<=n;i++)
b[i] = a[i].x;
build(1,1,n);
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
x=search(b,1,n,x1-1)+1;
y=search(b,1,n,x2);
printf("%d\n",det_nr(1,1,n));
}
return 0;
}