#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ordered_set tree<int, null_type,std::less<int>, rb_tree_tag,tree_order_statistics_node_update>
int n,q;
using T = std::tuple<int,int,int>;
std::vector<T> student;
std::vector<std::pair<T,int>> query;
std::vector<int> compress;
std::vector<int> cvalue[202000];
ordered_set value[402000];
void vins(int c,int l,int r,int idx,int v){
//std::cout << c << ' ' << l << ' ' << r << ' ' << idx << '\n';
if(l==r==idx){
value[c].insert(v);
return;
}
else if(l==r)return;
if(idx<=r&&idx>=l){
value[c].insert(v);
int mid = (l+r)/2;
vins(c*2,l,mid,idx,v);
vins(c*2+1,mid+1,r,idx,v);
}
}
int sum(int c,int l,int r,int ql,int qr,int min){
if(l>qr||r<ql)return 0;
if(ql<=l&&r<=qr){
return value[c].size()-value[c].order_of_key(min);
}
int mid=(l+r)/2;
return sum(c*2,l,mid,ql,qr,min)+sum(c*2+1,mid+1,r,ql,qr,min);
}
void ins(T in){
int b = std::get<1>(in);
int idx = std::lower_bound(compress.begin(),compress.end(),b)-compress.begin();
int c = std::get<2>(in);
vins(1,0,compress.size()-1,idx,c);
}
int getV(T in){
int b = std::get<1>(in);
int idx = std::lower_bound(compress.begin(),compress.end(),b)-compress.begin();
int c = std::get<2>(in);
return sum(0,0,compress.size()-1,idx,compress.size()-1,c);
}
signed main() {
//std::ios::sync_with_stdio(false);
//std::cin.tie(nullptr);
std::cin >> n >> q;
for(int i=0;i<n;i++){
int s,t;
std::cin >> s >> t;
student.push_back({s,t,s+t});
compress.push_back(t);
}
for(int i=0;i<q;i++){
int a,b,c;
std::cin >> a >> b >> c;
query.push_back({{a,b,c},i});
compress.push_back(b);
}
std::sort(compress.begin(),compress.end());
std::sort(student.rbegin(),student.rend());
std::sort(query.rbegin(),query.rend());
int sI=0,qI=0;
std::vector<std::pair<int,int>> ans;
while(qI<query.size()){
while(sI<student.size()&&std::get<0>(student[sI])>=std::get<0>(query[qI].first)){
ins(student[sI]);
sI++;
}
int res = getV(query[qI].first);
ans.push_back({query[qI].second,res});
qI++;
}
std::sort(ans.begin(),ans.end());
for(auto [idx,num]:ans){
std::cout << num << '\n';
}
}