#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#ifdef LOCAL
#include "algos/debug.h"
#else
#define debug(...) 42;
#endif
#define all(x) (x).begin(), (x).end()
#define isz(x) (int)x.size()
// #define int long long
const int sz = 2e5 + 1, inf = 1e9, mod = 1e9 + 7;
struct MergeSortTree {
vector<vector<array<int, 2>>> st;
vector<array<int, 2>> a;
MergeSortTree(int n, vector<int> r, vector<int> s) {
st.resize(n * 4 + 1);
a.resize(n + 1);
for (int i = 1; i <= n; i++) {
a[i] = {r[i], s[i]};
}
}
void build(int l, int r, int v) {
if (l == r) {
st[v].push_back({a[l][0], a[l][1]});
return;
}
int mid = (l + r) >> 1;
build(l, mid, v << 1);
build(mid + 1, r, v << 1 | 1);
merge(all(st[v << 1]), all(st[v << 1 | 1]), back_inserter(st[v]));
}
int getans_r(int ql, int qr, int l, int r, int val, int v) {
if (ql > r || l > qr)
return 0;
if (ql <= l && r <= qr) {
auto it = lower_bound(all(st[v]), array<int, 2>{val, -inf});
return st[v].end() - it;
}
int mid = (l + r) >> 1;
return getans_r(ql, qr, l, mid, val, v << 1) +
getans_r(ql, qr, mid + 1, r, val, v << 1 | 1);
}
int getans_s(int ql, int qr, int l, int r, int val, int v) {
if (ql > r || l > qr)
return 0;
if (ql <= l && r <= qr) {
auto it =
lower_bound(all(st[v]), array<int, 2>{-inf, val},
[](const array<int, 2> &aa, const array<int, 2> &bb) {
return aa[1] < bb[1];
});
return st[v].end() - it;
}
int mid = (l + r) >> 1;
return getans_s(ql, qr, l, mid, val, v << 1) +
getans_s(ql, qr, mid + 1, r, val, v << 1 | 1);
}
};
void run(int tc) {
int n, q;
cin >> n >> q;
vector<array<int, 2>> a(n + 1);
vector<int> l(n + 1), r(n + 1), s(n + 1);
for (int i = 1; i <= n; i++) {
cin >> a[i][0] >> a[i][1];
}
sort(all(a));
for (int i = 1; i <= n; i++) {
l[i] = a[i][0];
r[i] = a[i][1];
s[i] = l[i] + r[i];
}
MergeSortTree t1(n + 1, r, s);
t1.build(1, n, 1);
while (q--) {
int x, y, z;
cin >> x >> y >> z;
auto it = lower_bound(l.begin() + 1, l.end(), x);
if (it == l.end()) {
cout << 0 << '\n';
continue;
}
auto jt = n - t1.getans_r(it - l.begin(), n, 1, n, y, 1) + 1;
if (jt == n + 1) {
cout << 0 << '\n';
continue;
}
int ans = t1.getans_s(jt, n, 1, n, z, 1);
cout << ans << '\n';
}
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
// cin >> t;
for (int tc = 1; tc <= t; tc++)
run(tc);
}