#include <fstream>
#include <algorithm>
#include <vector>
#define nMax 16005
#define pb push_back
#define mkp make_pair
#define x first
#define y second
#define pii pair<long long, long long>
#define piiii pair<pii, pii>
using namespace std;
ifstream fin("zoo.in");
ofstream fout("zoo.out");
long long n, nrTarc;
long long v[nMax];
pii pct[nMax], vect[nMax];
vector<long long> arb[4*nMax];
void mergesort(long long node, long long st, long long dr)
{
if(st==dr)
{
arb[node].pb(pct[st].y);
return;
}
long long mid=st+(dr-st)/2;
mergesort(2*node, st, mid);
mergesort(2*node+1, mid+1, dr);
long long i=st, j=mid+1, pozLast=st-1;
for(; i<=mid && j<=dr;)
{
if(pct[i].y<=pct[j].y)
{
vect[++pozLast]=pct[i];
i++;
}
else
{
vect[++pozLast]=pct[j];
j++;
}
}
for(long long ii=i; ii<=mid; ii++)
vect[++pozLast]=pct[ii];
for(long long jj=j; jj<=dr; jj++)
vect[++pozLast]=pct[jj];
for(long long i=st; i<=dr; i++)
{
arb[node].pb(vect[i].y);
pct[i]=vect[i];
}
}
long long binSearch1(long long node, long long st, long long dr, long long pozst, long long pozdr, long long pozy)
{
long long pSt=0, pDr=dr-st, Sol=-1;
while(pSt<=pDr)
{
long long mid=pSt+(pDr-pSt)/2;
if(pozy>=arb[node][mid])
{
Sol=mid;
pSt=mid+1;
}
else
pDr=mid-1;
}
return Sol;
}
long long binSearch0(long long node, long long st, long long dr, long long pozst, long long pozdr, long long pozy)
{
long long pSt=0, pDr=dr-st, Sol=-1;
while(pSt<=pDr)
{
long long mid=pSt+(pDr-pSt)/2;
if(pozy<=arb[node][mid])
{
Sol=mid;
pDr=mid-1;
}
else
pSt=mid+1;
}
return Sol;
}
long long query(long long node, long long st, long long dr, long long pozst, long long pozdr, long long pozySt, long long pozyDr)
{
long long Sol=0;
if(v[st]>=pozst && v[dr]<=pozdr)
{
long long sol1=binSearch1(node, st, dr, pozst, pozdr, pozyDr);
long long sol2=binSearch0(node, st, dr, pozst, pozdr, pozySt);
if(sol1>=sol2 && sol1!=-1 && sol2!=-1)
Sol+=sol1-sol2+1;
return Sol;
}
if(st==dr)
return Sol;
long long mid=st+(dr-st)/2;
if(pozst<=v[mid])
Sol+=query(2*node, st, mid, pozst, pozdr, pozySt, pozyDr);
if(pozdr>v[mid])
Sol+=query(2*node+1, mid+1, dr, pozst, pozdr, pozySt, pozyDr);
return Sol;
}
int main()
{
long long linS, colS, linF, colF;
fin>>n;
for(long long i=1; i<=n; i++)
{
fin>>linS>>colS;
pct[i]=mkp(linS, colS);
v[i]=linS;
}
sort(pct+1, pct+n+1);
sort(v+1, v+n+1);
mergesort(1, 1, n);
fin>>nrTarc;
for(long long i=1; i<=nrTarc; i++)
{
fin>>linS>>colS>>linF>>colF;
fout<<query(1, 1, n, linS, linF, colS, colF)<<'\n';
}
}