#include <bits/stdc++.h>
#define FOR(i,a,b) for(int i=a;i<b;i++)
#define REP(i,b) FOR(i,0,b)
#define PB push_back
using namespace std;
typedef long long ll;
int read(){
int i;
scanf("%d",&i);
return i;
}
const int maxN=100000;
const int maxQ=100000;
const int maxX=100001;
const int B=500;
const int D=200;
struct Query{
int t,l,r,i;
bool operator<(const Query& rhs)const{
return t<rhs.t;
}
} qs[maxQ];
int x[maxN],v[maxN],sum[maxX],ans[maxQ];
inline void Add(ll i,int a){
if(0<=i&&i<maxX)
sum[i]+=a;
}
inline int Get(int i){
if(i<0)
return 0;
return sum[min(i,maxX-1)];
}
vector<int> pos[D*2];
int main(){
int n=read();
REP(i,n){
x[i]=read(),v[i]=read();
sum[x[i]]++;
if(abs(v[i])<D)
pos[v[i]+D].PB(x[i]);
}
FOR(i,1,maxX)
sum[i]+=sum[i-1];
int q=read(),s=0;
REP(i,q){
int t=read(),l=read(),r=read();
qs[i]=Query{t,l,r,i};
if(t<=B)
s++;
}
sort(qs,qs+q);
int last=0;
REP(i,s){
if(qs[i].t>last){
memset(sum,0,sizeof(sum));
REP(j,n)
Add(ll(x[j])+ll(v[j])*qs[i].t,1);
FOR(j,1,maxX)
sum[j]+=sum[j-1];
last=qs[i].t;
}
ans[qs[i].i]=Get(qs[i].r)-Get(qs[i].l-1);
}
REP(i,D*2){
if(pos[i].empty())
continue;
memset(sum,0,sizeof(sum));
for(auto j:pos[i])
sum[j]++;
FOR(j,1,maxX)
sum[j]+=sum[j-1];
FOR(j,s,q)
ans[qs[j].i]+=Get(qs[j].r-(i-D)*qs[j].t)-Get(qs[j].l-(i-D)*qs[j].t-1);
}
REP(i,q)
printf("%d\n",ans[i]);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAKI2RlZmluZSBGT1IoaSxhLGIpIGZvcihpbnQgaT1hO2k8YjtpKyspCiNkZWZpbmUgUkVQKGksYikgRk9SKGksMCxiKQojZGVmaW5lIFBCIHB1c2hfYmFjawogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKdHlwZWRlZiBsb25nIGxvbmcgbGw7CiAKaW50IHJlYWQoKXsKCWludCBpOwoJc2NhbmYoIiVkIiwmaSk7CglyZXR1cm4gaTsKfQogCmNvbnN0IGludCBtYXhOPTEwMDAwMDsKY29uc3QgaW50IG1heFE9MTAwMDAwOwpjb25zdCBpbnQgbWF4WD0xMDAwMDE7CmNvbnN0IGludCBCPTUwMDsKY29uc3QgaW50IEQ9MjAwOwogCnN0cnVjdCBRdWVyeXsKCWludCB0LGwscixpOwoJYm9vbCBvcGVyYXRvcjwoY29uc3QgUXVlcnkmIHJocyljb25zdHsKCQlyZXR1cm4gdDxyaHMudDsKCX0KfSBxc1ttYXhRXTsKIAogCmludCB4W21heE5dLHZbbWF4Tl0sc3VtW21heFhdLGFuc1ttYXhRXTsKaW5saW5lIHZvaWQgQWRkKGxsIGksaW50IGEpewoJaWYoMDw9aSYmaTxtYXhYKQoJCXN1bVtpXSs9YTsKfQppbmxpbmUgaW50IEdldChpbnQgaSl7CglpZihpPDApCgkJcmV0dXJuIDA7CglyZXR1cm4gc3VtW21pbihpLG1heFgtMSldOwp9CnZlY3RvcjxpbnQ+IHBvc1tEKjJdOwogCmludCBtYWluKCl7CglpbnQgbj1yZWFkKCk7CglSRVAoaSxuKXsKCQl4W2ldPXJlYWQoKSx2W2ldPXJlYWQoKTsKCQlzdW1beFtpXV0rKzsKCQlpZihhYnModltpXSk8RCkKCQkJcG9zW3ZbaV0rRF0uUEIoeFtpXSk7Cgl9CglGT1IoaSwxLG1heFgpCgkJc3VtW2ldKz1zdW1baS0xXTsKCQoJaW50IHE9cmVhZCgpLHM9MDsKCVJFUChpLHEpewoJCWludCB0PXJlYWQoKSxsPXJlYWQoKSxyPXJlYWQoKTsKCQlxc1tpXT1RdWVyeXt0LGwscixpfTsKCQlpZih0PD1CKQoJCQlzKys7Cgl9Cglzb3J0KHFzLHFzK3EpOwoJCglpbnQgbGFzdD0wOwoJUkVQKGkscyl7CgkJaWYocXNbaV0udD5sYXN0KXsKCQkJbWVtc2V0KHN1bSwwLHNpemVvZihzdW0pKTsKCQkJUkVQKGosbikKCQkJCUFkZChsbCh4W2pdKStsbCh2W2pdKSpxc1tpXS50LDEpOwoJCQlGT1IoaiwxLG1heFgpCgkJCQlzdW1bal0rPXN1bVtqLTFdOwoJCQlsYXN0PXFzW2ldLnQ7CgkJfQoJCWFuc1txc1tpXS5pXT1HZXQocXNbaV0uciktR2V0KHFzW2ldLmwtMSk7Cgl9CgkKCVJFUChpLEQqMil7CgkJaWYocG9zW2ldLmVtcHR5KCkpCgkJCWNvbnRpbnVlOwoJCW1lbXNldChzdW0sMCxzaXplb2Yoc3VtKSk7CgkJZm9yKGF1dG8gajpwb3NbaV0pCgkJCXN1bVtqXSsrOwoJCUZPUihqLDEsbWF4WCkKCQkJc3VtW2pdKz1zdW1bai0xXTsKCQlGT1IoaixzLHEpCgkJCWFuc1txc1tqXS5pXSs9R2V0KHFzW2pdLnItKGktRCkqcXNbal0udCktR2V0KHFzW2pdLmwtKGktRCkqcXNbal0udC0xKTsKCX0KCVJFUChpLHEpCgkJcHJpbnRmKCIlZFxuIixhbnNbaV0pOwp9