#include <bits/stdc++.h>
using namespace std;
#define file "o"
#define ff(i,a,b) for(auto i=(a); i<=(b); ++i)
#define ffr(i,b,a) for(auto i=(b); i>=(a); --i)
#define ss " "
#define pb emplace_back
#define sz(s) (int)(s).size()
#define all(s) (s).begin(), (s).end()
#define cn continue
#define re exit(0)
using ll = long long;
using vi = vector<int>;
const int maxn1 = 200000 + 5;
struct HS{int x,r,ts;} a[maxn1];
struct B{ll l,x,r;} b[maxn1];
inline void rf(){
ios::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
if(fopen(file".inp","r")){
freopen(file".inp","r",stdin);
freopen(file".out","w",stdout);
}
}
struct BIT{
int n=0;
vector<int> t,used;
inline void reset(int _n){
n=_n;
if(sz(t)<n+1) t.assign(n+1,0);
used.clear();
}
inline void add(int x,int v){
for(; x<=n; x+=x&-x){
if(t[x]==0) used.pb(x);
t[x]+=v;
}
}
inline int sum(int x) const{
int s=0; for(; x>0; x-=x&-x) s+=t[x]; return s;
}
inline int range(int l,int r) const{
if(r<=0||l>r) return 0;
if(l<=1) return sum(r);
return sum(r)-sum(l-1);
}
inline void clear_used(){
for(int i:used) t[i]=0;
used.clear();
}
};
int n,q;
vector<vi> g;
vector<vector<ll>> coords;
vector<int> posL,posX,posR;
vector<int> tmp2;
vector<array<ll,51>> cntPref;
inline int getPos(const vector<ll>& v, ll val){
return (int)(upper_bound(all(v), val)-v.begin());
}
inline bool cmpIdxByRadius(int i,int j){ return a[i].r>a[j].r; }
ll calGroup(int tRank){
static BIT bit;
const auto &vec = g[tRank];
bit.reset(sz(coords[tRank]));
ll ans=0;
for(int idx:vec){
ans += bit.range(posL[idx], posR[idx]);
bit.add(posX[idx],1);
}
bit.clear_used();
return ans;
}
ll cal2(int i,int j){
static BIT bi,bj;
const auto &gi=g[i], &gj=g[j];
bi.reset(sz(coords[i]));
bj.reset(sz(coords[j]));
ll ans=0;
int p1=0,p2=0;
while(p1<sz(gi) && p2<sz(gj)){
int u=gi[p1], v=gj[p2];
if(a[u].r>a[v].r){
int li_i=posL[u], ri_i=posR[u];
int li_j=getPos(coords[j], b[u].l);
int ri_j=getPos(coords[j], b[u].r);
ans += bi.range(li_i,ri_i) + bj.range(li_j,ri_j);
bi.add(posX[u],1);
++p1;
}else{
int lj_j=posL[v], rj_j=posR[v];
int lj_i=getPos(coords[i], b[v].l);
int rj_i=getPos(coords[i], b[v].r);
ans += bj.range(lj_j,rj_j) + bi.range(lj_i,rj_i);
bj.add(posX[v],1);
++p2;
}
}
while(p1<sz(gi)){
int u=gi[p1++];
int li_i=posL[u], ri_i=posR[u];
int li_j=getPos(coords[j], b[u].l);
int ri_j=getPos(coords[j], b[u].r);
ans += bi.range(li_i,ri_i) + bj.range(li_j,ri_j);
bi.add(posX[u],1);
}
while(p2<sz(gj)){
int v=gj[p2++];
int lj_j=posL[v], rj_j=posR[v];
int lj_i=getPos(coords[i], b[v].l);
int rj_i=getPos(coords[i], b[v].r);
ans += bj.range(lj_j,rj_j) + bi.range(lj_i,rj_i);
bj.add(posX[v],1);
}
bi.clear_used();
bj.clear_used();
return ans;
}
int main(){
rf();
int sub; if(!(cin>>sub)) return 0;
cin>>n>>q;
ff(i,1,n){
int x,r,ts; cin>>x>>r>>ts;
a[i]={x,r,ts};
b[i]={ (ll)x-r, (ll)x, (ll)x+r };
}
{
vector<int> vts; vts.reserve(n);
ff(i,1,n) vts.pb(a[i].ts);
sort(all(vts)); vts.erase(unique(all(vts)), vts.end());
tmp2=vts;
ff(i,1,n) a[i].ts=(int)(upper_bound(all(vts), a[i].ts)-vts.begin());
}
int T=sz(tmp2);
g.assign(T+2,{});
coords.assign(T+2,{});
posL.assign(n+5,0);
posX.assign(n+5,0);
posR.assign(n+5,0);
ff(i,1,n) g[a[i].ts].pb(i);
ff(t,1,T){
auto &vec=g[t];
if(vec.empty()) cn;
static vector<ll> pool;
pool.clear(); pool.reserve(3*sz(vec));
for(int idx:vec){ pool.pb(b[idx].l); pool.pb(b[idx].x); pool.pb(b[idx].r); }
sort(all(pool)); pool.erase(unique(all(pool)), pool.end());
coords[t]=pool;
for(int idx:vec){
posL[idx]=getPos(coords[t], b[idx].l);
posX[idx]=getPos(coords[t], b[idx].x);
posR[idx]=getPos(coords[t], b[idx].r);
}
}
ff(t,1,T) sort(all(g[t]), cmpIdxByRadius);
const int K=50;
cntPref.assign(T+2,{});
ff(i,1,T) cntPref[i][0]=calGroup(i);
ff(i,1,T){
for(int j=i+1; j<=min(T,i+K); ++j){
ll cross=cal2(i,j)-cntPref[i][0]-cntPref[j][0];
int d=j-i;
cntPref[i][d]=cntPref[i][d-1]+cross;
}
}
while(q--){
int mn,mx; cin>>mn>>mx;
int L=(int)(lower_bound(all(tmp2), mn)-tmp2.begin())+1;
int R=(int)(upper_bound(all(tmp2), mx)-tmp2.begin());
if(L>R||L<1||R<1||L>T||R>T){ cout<<0<<ss; cn; }
ll ans=0;
for(int i=L;i<=R;++i){
int d=R-i; if(d>K) d=K;
ans+=cntPref[i][d];
}
cout<<ans<<ss;
}
re;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGZpbGUgIm8iCiNkZWZpbmUgZmYoaSxhLGIpIGZvcihhdXRvIGk9KGEpOyBpPD0oYik7ICsraSkKI2RlZmluZSBmZnIoaSxiLGEpIGZvcihhdXRvIGk9KGIpOyBpPj0oYSk7IC0taSkKI2RlZmluZSBzcyAiICIKI2RlZmluZSBwYiBlbXBsYWNlX2JhY2sKI2RlZmluZSBzeihzKSAoaW50KShzKS5zaXplKCkKI2RlZmluZSBhbGwocykgKHMpLmJlZ2luKCksIChzKS5lbmQoKQojZGVmaW5lIGNuIGNvbnRpbnVlCiNkZWZpbmUgcmUgZXhpdCgwKQoKdXNpbmcgbGwgPSBsb25nIGxvbmc7CnVzaW5nIHZpID0gdmVjdG9yPGludD47Cgpjb25zdCBpbnQgbWF4bjEgPSAyMDAwMDAgKyA1OwoKc3RydWN0IEhTe2ludCB4LHIsdHM7fSBhW21heG4xXTsKc3RydWN0IEJ7bGwgbCx4LHI7fSBiW21heG4xXTsKCmlubGluZSB2b2lkIHJmKCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOyBjb3V0LnRpZShudWxscHRyKTsKICAgIGlmKGZvcGVuKGZpbGUiLmlucCIsInIiKSl7CiAgICAgICAgZnJlb3BlbihmaWxlIi5pbnAiLCJyIixzdGRpbik7CiAgICAgICAgZnJlb3BlbihmaWxlIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgfQp9CgpzdHJ1Y3QgQklUewogICAgaW50IG49MDsKICAgIHZlY3RvcjxpbnQ+IHQsdXNlZDsKICAgIGlubGluZSB2b2lkIHJlc2V0KGludCBfbil7CiAgICAgICAgbj1fbjsKICAgICAgICBpZihzeih0KTxuKzEpIHQuYXNzaWduKG4rMSwwKTsKICAgICAgICB1c2VkLmNsZWFyKCk7CiAgICB9CiAgICBpbmxpbmUgdm9pZCBhZGQoaW50IHgsaW50IHYpewogICAgICAgIGZvcig7IHg8PW47IHgrPXgmLXgpewogICAgICAgICAgICBpZih0W3hdPT0wKSB1c2VkLnBiKHgpOwogICAgICAgICAgICB0W3hdKz12OwogICAgICAgIH0KICAgIH0KICAgIGlubGluZSBpbnQgc3VtKGludCB4KSBjb25zdHsKICAgICAgICBpbnQgcz0wOyBmb3IoOyB4PjA7IHgtPXgmLXgpIHMrPXRbeF07IHJldHVybiBzOwogICAgfQogICAgaW5saW5lIGludCByYW5nZShpbnQgbCxpbnQgcikgY29uc3R7CiAgICAgICAgaWYocjw9MHx8bD5yKSByZXR1cm4gMDsKICAgICAgICBpZihsPD0xKSByZXR1cm4gc3VtKHIpOwogICAgICAgIHJldHVybiBzdW0ociktc3VtKGwtMSk7CiAgICB9CiAgICBpbmxpbmUgdm9pZCBjbGVhcl91c2VkKCl7CiAgICAgICAgZm9yKGludCBpOnVzZWQpIHRbaV09MDsKICAgICAgICB1c2VkLmNsZWFyKCk7CiAgICB9Cn07CgppbnQgbixxOwp2ZWN0b3I8dmk+IGc7CnZlY3Rvcjx2ZWN0b3I8bGw+PiBjb29yZHM7CnZlY3RvcjxpbnQ+IHBvc0wscG9zWCxwb3NSOwp2ZWN0b3I8aW50PiB0bXAyOwp2ZWN0b3I8YXJyYXk8bGwsNTE+PiBjbnRQcmVmOwoKaW5saW5lIGludCBnZXRQb3MoY29uc3QgdmVjdG9yPGxsPiYgdiwgbGwgdmFsKXsKICAgIHJldHVybiAoaW50KSh1cHBlcl9ib3VuZChhbGwodiksIHZhbCktdi5iZWdpbigpKTsKfQppbmxpbmUgYm9vbCBjbXBJZHhCeVJhZGl1cyhpbnQgaSxpbnQgail7IHJldHVybiBhW2ldLnI+YVtqXS5yOyB9CgpsbCBjYWxHcm91cChpbnQgdFJhbmspewogICAgc3RhdGljIEJJVCBiaXQ7CiAgICBjb25zdCBhdXRvICZ2ZWMgPSBnW3RSYW5rXTsKICAgIGJpdC5yZXNldChzeihjb29yZHNbdFJhbmtdKSk7CiAgICBsbCBhbnM9MDsKICAgIGZvcihpbnQgaWR4OnZlYyl7CiAgICAgICAgYW5zICs9IGJpdC5yYW5nZShwb3NMW2lkeF0sIHBvc1JbaWR4XSk7CiAgICAgICAgYml0LmFkZChwb3NYW2lkeF0sMSk7CiAgICB9CiAgICBiaXQuY2xlYXJfdXNlZCgpOwogICAgcmV0dXJuIGFuczsKfQoKbGwgY2FsMihpbnQgaSxpbnQgail7CiAgICBzdGF0aWMgQklUIGJpLGJqOwogICAgY29uc3QgYXV0byAmZ2k9Z1tpXSwgJmdqPWdbal07CiAgICBiaS5yZXNldChzeihjb29yZHNbaV0pKTsKICAgIGJqLnJlc2V0KHN6KGNvb3Jkc1tqXSkpOwogICAgbGwgYW5zPTA7CiAgICBpbnQgcDE9MCxwMj0wOwogICAgd2hpbGUocDE8c3ooZ2kpICYmIHAyPHN6KGdqKSl7CiAgICAgICAgaW50IHU9Z2lbcDFdLCB2PWdqW3AyXTsKICAgICAgICBpZihhW3VdLnI+YVt2XS5yKXsKICAgICAgICAgICAgaW50IGxpX2k9cG9zTFt1XSwgcmlfaT1wb3NSW3VdOwogICAgICAgICAgICBpbnQgbGlfaj1nZXRQb3MoY29vcmRzW2pdLCBiW3VdLmwpOwogICAgICAgICAgICBpbnQgcmlfaj1nZXRQb3MoY29vcmRzW2pdLCBiW3VdLnIpOwogICAgICAgICAgICBhbnMgKz0gYmkucmFuZ2UobGlfaSxyaV9pKSArIGJqLnJhbmdlKGxpX2oscmlfaik7CiAgICAgICAgICAgIGJpLmFkZChwb3NYW3VdLDEpOwogICAgICAgICAgICArK3AxOwogICAgICAgIH1lbHNlewogICAgICAgICAgICBpbnQgbGpfaj1wb3NMW3ZdLCByal9qPXBvc1Jbdl07CiAgICAgICAgICAgIGludCBsal9pPWdldFBvcyhjb29yZHNbaV0sIGJbdl0ubCk7CiAgICAgICAgICAgIGludCByal9pPWdldFBvcyhjb29yZHNbaV0sIGJbdl0ucik7CiAgICAgICAgICAgIGFucyArPSBiai5yYW5nZShsal9qLHJqX2opICsgYmkucmFuZ2UobGpfaSxyal9pKTsKICAgICAgICAgICAgYmouYWRkKHBvc1hbdl0sMSk7CiAgICAgICAgICAgICsrcDI7CiAgICAgICAgfQogICAgfQogICAgd2hpbGUocDE8c3ooZ2kpKXsKICAgICAgICBpbnQgdT1naVtwMSsrXTsKICAgICAgICBpbnQgbGlfaT1wb3NMW3VdLCByaV9pPXBvc1JbdV07CiAgICAgICAgaW50IGxpX2o9Z2V0UG9zKGNvb3Jkc1tqXSwgYlt1XS5sKTsKICAgICAgICBpbnQgcmlfaj1nZXRQb3MoY29vcmRzW2pdLCBiW3VdLnIpOwogICAgICAgIGFucyArPSBiaS5yYW5nZShsaV9pLHJpX2kpICsgYmoucmFuZ2UobGlfaixyaV9qKTsKICAgICAgICBiaS5hZGQocG9zWFt1XSwxKTsKICAgIH0KICAgIHdoaWxlKHAyPHN6KGdqKSl7CiAgICAgICAgaW50IHY9Z2pbcDIrK107CiAgICAgICAgaW50IGxqX2o9cG9zTFt2XSwgcmpfaj1wb3NSW3ZdOwogICAgICAgIGludCBsal9pPWdldFBvcyhjb29yZHNbaV0sIGJbdl0ubCk7CiAgICAgICAgaW50IHJqX2k9Z2V0UG9zKGNvb3Jkc1tpXSwgYlt2XS5yKTsKICAgICAgICBhbnMgKz0gYmoucmFuZ2UobGpfaixyal9qKSArIGJpLnJhbmdlKGxqX2kscmpfaSk7CiAgICAgICAgYmouYWRkKHBvc1hbdl0sMSk7CiAgICB9CiAgICBiaS5jbGVhcl91c2VkKCk7CiAgICBiai5jbGVhcl91c2VkKCk7CiAgICByZXR1cm4gYW5zOwp9CgppbnQgbWFpbigpewogICAgcmYoKTsKICAgIGludCBzdWI7IGlmKCEoY2luPj5zdWIpKSByZXR1cm4gMDsKICAgIGNpbj4+bj4+cTsKICAgIGZmKGksMSxuKXsKICAgICAgICBpbnQgeCxyLHRzOyBjaW4+Png+PnI+PnRzOwogICAgICAgIGFbaV09e3gscix0c307CiAgICAgICAgYltpXT17IChsbCl4LXIsIChsbCl4LCAobGwpeCtyIH07CiAgICB9CiAgICB7CiAgICAgICAgdmVjdG9yPGludD4gdnRzOyB2dHMucmVzZXJ2ZShuKTsKICAgICAgICBmZihpLDEsbikgdnRzLnBiKGFbaV0udHMpOwogICAgICAgIHNvcnQoYWxsKHZ0cykpOyB2dHMuZXJhc2UodW5pcXVlKGFsbCh2dHMpKSwgdnRzLmVuZCgpKTsKICAgICAgICB0bXAyPXZ0czsKICAgICAgICBmZihpLDEsbikgYVtpXS50cz0oaW50KSh1cHBlcl9ib3VuZChhbGwodnRzKSwgYVtpXS50cyktdnRzLmJlZ2luKCkpOwogICAgfQogICAgaW50IFQ9c3oodG1wMik7CiAgICBnLmFzc2lnbihUKzIse30pOwogICAgY29vcmRzLmFzc2lnbihUKzIse30pOwogICAgcG9zTC5hc3NpZ24obis1LDApOwogICAgcG9zWC5hc3NpZ24obis1LDApOwogICAgcG9zUi5hc3NpZ24obis1LDApOwogICAgZmYoaSwxLG4pIGdbYVtpXS50c10ucGIoaSk7CiAgICBmZih0LDEsVCl7CiAgICAgICAgYXV0byAmdmVjPWdbdF07CiAgICAgICAgaWYodmVjLmVtcHR5KCkpIGNuOwogICAgICAgIHN0YXRpYyB2ZWN0b3I8bGw+IHBvb2w7CiAgICAgICAgcG9vbC5jbGVhcigpOyBwb29sLnJlc2VydmUoMypzeih2ZWMpKTsKICAgICAgICBmb3IoaW50IGlkeDp2ZWMpeyBwb29sLnBiKGJbaWR4XS5sKTsgcG9vbC5wYihiW2lkeF0ueCk7IHBvb2wucGIoYltpZHhdLnIpOyB9CiAgICAgICAgc29ydChhbGwocG9vbCkpOyBwb29sLmVyYXNlKHVuaXF1ZShhbGwocG9vbCkpLCBwb29sLmVuZCgpKTsKICAgICAgICBjb29yZHNbdF09cG9vbDsKICAgICAgICBmb3IoaW50IGlkeDp2ZWMpewogICAgICAgICAgICBwb3NMW2lkeF09Z2V0UG9zKGNvb3Jkc1t0XSwgYltpZHhdLmwpOwogICAgICAgICAgICBwb3NYW2lkeF09Z2V0UG9zKGNvb3Jkc1t0XSwgYltpZHhdLngpOwogICAgICAgICAgICBwb3NSW2lkeF09Z2V0UG9zKGNvb3Jkc1t0XSwgYltpZHhdLnIpOwogICAgICAgIH0KICAgIH0KICAgIGZmKHQsMSxUKSBzb3J0KGFsbChnW3RdKSwgY21wSWR4QnlSYWRpdXMpOwogICAgY29uc3QgaW50IEs9NTA7CiAgICBjbnRQcmVmLmFzc2lnbihUKzIse30pOwogICAgZmYoaSwxLFQpIGNudFByZWZbaV1bMF09Y2FsR3JvdXAoaSk7CiAgICBmZihpLDEsVCl7CiAgICAgICAgZm9yKGludCBqPWkrMTsgajw9bWluKFQsaStLKTsgKytqKXsKICAgICAgICAgICAgbGwgY3Jvc3M9Y2FsMihpLGopLWNudFByZWZbaV1bMF0tY250UHJlZltqXVswXTsKICAgICAgICAgICAgaW50IGQ9ai1pOwogICAgICAgICAgICBjbnRQcmVmW2ldW2RdPWNudFByZWZbaV1bZC0xXStjcm9zczsKICAgICAgICB9CiAgICB9CiAgICB3aGlsZShxLS0pewogICAgICAgIGludCBtbixteDsgY2luPj5tbj4+bXg7CiAgICAgICAgaW50IEw9KGludCkobG93ZXJfYm91bmQoYWxsKHRtcDIpLCBtbiktdG1wMi5iZWdpbigpKSsxOwogICAgICAgIGludCBSPShpbnQpKHVwcGVyX2JvdW5kKGFsbCh0bXAyKSwgbXgpLXRtcDIuYmVnaW4oKSk7CiAgICAgICAgaWYoTD5SfHxMPDF8fFI8MXx8TD5UfHxSPlQpeyBjb3V0PDwwPDxzczsgY247IH0KICAgICAgICBsbCBhbnM9MDsKICAgICAgICBmb3IoaW50IGk9TDtpPD1SOysraSl7CiAgICAgICAgICAgIGludCBkPVItaTsgaWYoZD5LKSBkPUs7CiAgICAgICAgICAgIGFucys9Y250UHJlZltpXVtkXTsKICAgICAgICB9CiAgICAgICAgY291dDw8YW5zPDxzczsKICAgIH0KICAgIHJlOwp9Cg==