#include<cstdio>
#include<algorithm>
using namespace std;
vector<int>x,ans[16*16005];
pair<int,int> v[16005];
int l,r,x1,y3,x2,y2,rez;
void upd(int nod,int st,int dr){
if (st==dr){
ans[nod].push_back(v[st].second);
return ;}
int mij=(st+dr)/2;
upd(2*nod,st,mij);
upd(2*nod+1,mij+1,dr);
ans[nod].resize(ans[2*nod].size()+ans[2*nod+1].size());
merge(ans[2*nod].begin(),ans[2*nod].end(),ans[2*nod+1].begin(),ans[2*nod+1].end(),ans[nod].begin());}
void query(int nod,int st,int dr){
int poz1,poz2,mij;
if (l<=st && dr<=r){
poz1=lower_bound(ans[nod].begin(),ans[nod].end(),y3)-ans[nod].begin();
poz2=upper_bound(ans[nod].begin(),ans[nod].end(),y2)-ans[nod].begin();
rez=rez+poz2-poz1;
return ;}
mij=(st+dr)/2;
if (l<=mij)
query(nod*2,st,mij);
if (mij<r)
query(nod*2+1,mij+1,dr);}
int main(){
freopen("zoo.in","r",stdin);
freopen("zoo.out","w",stdout);
int n,i,m;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d%d",&v[i].first,&v[i].second);
x.push_back(v[i].first);}
sort(x.begin(),x.end());
sort(v+1,v+n+1);
upd(1,1,n);
scanf("%d",&m);
for(i=1;i<=m;i++){
scanf("%d%d%d%d",&x1,&y3,&x2,&y2);
l=lower_bound(x.begin(),x.end(),x1)-x.begin()+1;
r=upper_bound(x.begin(),x.end(),x2)-x.begin();
rez=0;
query(1,1,n);
printf("%d\n",rez);}
return 0;}