#include <bits/stdc++.h>
#define FOR(i, a, b) for (int i = a; i <= b; ++i)
#define FORD(i, a, b) for (int i = a; i >= b; --i)
#define ll long long
using namespace std;
const int N = 2e5 + 5;
const int delta = 55;
int sub, n, q;
ll dp[N][delta];
vector<int> val;
vector<int> ID[N], POS[N];
struct Student {
int x, r, t;
void input() {
cin >> x >> r >> t;
}
} Students[N];
struct Fenwick_Tree {
int n;
vector<int> bit;
Fenwick_Tree(int _n = 0) {
n = _n;
bit.assign(n + 5, 0);
}
void upd(int x, int value) {
for (; x <= n; x += x & -x) bit[x] += value;
}
int get(int x) {
int ans = 0;
for (; x; x -= x & -x) ans += bit[x];
return ans;
}
int get_range(int l, int r) {
if (l > r) return 0;
if (l <= 1) return get(r);
return get(r) - get(l - 1);
}
};
void nhap() {
cin >> sub >> n >> q;
FOR(i, 1, n) Students[i].input();
}
bool cmp(const int &x, const int &y) {
return Students[x].r > Students[y].r;
}
ll Count1(vector<int> &idList, vector<int> &posList) {
if (idList.empty()) return 0;
sort(idList.begin(), idList.end(), cmp);
sort(posList.begin(), posList.end());
posList.resize(unique(posList.begin(), posList.end()) - posList.begin());
ll ans = 0;
Fenwick_Tree bit((int)posList.size());
for (int it : idList) {
int l = Students[it].x - Students[it].r;
int r = Students[it].x + Students[it].r;
int L = lower_bound(posList.begin(), posList.end(), l) - posList.begin() + 1;
int R = upper_bound(posList.begin(), posList.end(), r) - posList.begin();
if (L <= R) ans += bit.get_range(L, R);
int idxpos = lower_bound(posList.begin(), posList.end(), Students[it].x) - posList.begin() + 1;
bit.upd(idxpos, 1);
}
return ans;
}
ll Count2(const vector<int> &BigID, const vector<int> &posList, const vector<int> &LowID, bool flag) {
if (BigID.empty() || LowID.empty() || posList.empty()) return 0;
ll ans = 0;
Fenwick_Tree bit((int)posList.size());
int j = 0;
for (int it : LowID) {
while (j < (int)BigID.size() && Students[BigID[j]].r >= (flag ? Students[it].r : (Students[it].r + 1))) {
int idxpos = lower_bound(posList.begin(), posList.end(), Students[BigID[j]].x) - posList.begin() + 1;
bit.upd(idxpos, 1);
j++;
}
int l = Students[it].x - Students[it].r;
int r = Students[it].x + Students[it].r;
int L = lower_bound(posList.begin(), posList.end(), l) - posList.begin() + 1;
int R = upper_bound(posList.begin(), posList.end(), r) - posList.begin();
if (L <= R) ans += bit.get_range(L, R);
}
return ans;
}
void init() {
val.clear();
FOR(i, 1, n) val.push_back(Students[i].t);
sort(val.begin(), val.end());
val.resize(unique(val.begin(), val.end()) - val.begin());
int m = (int)val.size();
FOR(i, 1, m) {
ID[i].clear();
POS[i].clear();
}
FOR(i, 1, n) {
int comp = lower_bound(val.begin(), val.end(), Students[i].t) - val.begin() + 1;
Students[i].t = comp;
ID[comp].push_back(i);
POS[comp].push_back(Students[i].x);
}
FOR(cnt, 1, m) {
sort(ID[cnt].begin(), ID[cnt].end(), [&](int a, int b){
return Students[a].r > Students[b].r;
});
sort(POS[cnt].begin(), POS[cnt].end());
POS[cnt].resize(unique(POS[cnt].begin(), POS[cnt].end()) - POS[cnt].begin());
}
FOR(i, 1, m) dp[i][0] = Count1(ID[i], POS[i]);
FOR(i, 1, m) {
FOR(j, i + 1, m) {
if (val[j - 1] - val[i - 1] >= delta) break;
ll cur = Count2(ID[i], POS[i], ID[j], 1) + Count2(ID[j], POS[j], ID[i], 0);
dp[i][j - i] = cur + dp[i][j - i - 1];
}
}
}
void giai() {
while (q--) {
int l, r;
cin >> l >> r;
int L = lower_bound(val.begin(), val.end(), l) - val.begin() + 1;
int R = upper_bound(val.begin(), val.end(), r) - val.begin();
ll ans = 0;
FOR(i, L, R) ans += dp[i][R - i];
cout << ans << ' ';
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
#define name "lovesharing"
if (fopen(name".inp", "r")) {
freopen(name".inp", "r", stdin);
freopen(name".out", "w", stdout);
}
nhap();
init();
giai();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIEZPUihpLCBhLCBiKSBmb3IgKGludCBpID0gYTsgaSA8PSBiOyArK2kpCiNkZWZpbmUgRk9SRChpLCBhLCBiKSBmb3IgKGludCBpID0gYTsgaSA+PSBiOyAtLWkpCiNkZWZpbmUgbGwgbG9uZyBsb25nCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE4gPSAyZTUgKyA1Owpjb25zdCBpbnQgZGVsdGEgPSA1NTsKaW50IHN1YiwgbiwgcTsKbGwgZHBbTl1bZGVsdGFdOwp2ZWN0b3I8aW50PiB2YWw7CnZlY3RvcjxpbnQ+IElEW05dLCBQT1NbTl07CgpzdHJ1Y3QgU3R1ZGVudCB7CiAgICBpbnQgeCwgciwgdDsKICAgIHZvaWQgaW5wdXQoKSB7CiAgICAgICAgY2luID4+IHggPj4gciA+PiB0OwogICAgfQp9IFN0dWRlbnRzW05dOwoKc3RydWN0IEZlbndpY2tfVHJlZSB7CiAgICBpbnQgbjsKICAgIHZlY3RvcjxpbnQ+IGJpdDsKICAgIEZlbndpY2tfVHJlZShpbnQgX24gPSAwKSB7CiAgICAgICAgbiA9IF9uOwogICAgICAgIGJpdC5hc3NpZ24obiArIDUsIDApOwogICAgfQogICAgdm9pZCB1cGQoaW50IHgsIGludCB2YWx1ZSkgewogICAgICAgIGZvciAoOyB4IDw9IG47IHggKz0geCAmIC14KSBiaXRbeF0gKz0gdmFsdWU7CiAgICB9CiAgICBpbnQgZ2V0KGludCB4KSB7CiAgICAgICAgaW50IGFucyA9IDA7CiAgICAgICAgZm9yICg7IHg7IHggLT0geCAmIC14KSBhbnMgKz0gYml0W3hdOwogICAgICAgIHJldHVybiBhbnM7CiAgICB9CiAgICBpbnQgZ2V0X3JhbmdlKGludCBsLCBpbnQgcikgewogICAgICAgIGlmIChsID4gcikgcmV0dXJuIDA7CiAgICAgICAgaWYgKGwgPD0gMSkgcmV0dXJuIGdldChyKTsKICAgICAgICByZXR1cm4gZ2V0KHIpIC0gZ2V0KGwgLSAxKTsKICAgIH0KfTsKCnZvaWQgbmhhcCgpIHsKICAgIGNpbiA+PiBzdWIgPj4gbiA+PiBxOwogICAgRk9SKGksIDEsIG4pIFN0dWRlbnRzW2ldLmlucHV0KCk7Cn0KCmJvb2wgY21wKGNvbnN0IGludCAmeCwgY29uc3QgaW50ICZ5KSB7CiAgICByZXR1cm4gU3R1ZGVudHNbeF0uciA+IFN0dWRlbnRzW3ldLnI7Cn0KCmxsIENvdW50MSh2ZWN0b3I8aW50PiAmaWRMaXN0LCB2ZWN0b3I8aW50PiAmcG9zTGlzdCkgewogICAgaWYgKGlkTGlzdC5lbXB0eSgpKSByZXR1cm4gMDsKICAgIHNvcnQoaWRMaXN0LmJlZ2luKCksIGlkTGlzdC5lbmQoKSwgY21wKTsKICAgIHNvcnQocG9zTGlzdC5iZWdpbigpLCBwb3NMaXN0LmVuZCgpKTsKICAgIHBvc0xpc3QucmVzaXplKHVuaXF1ZShwb3NMaXN0LmJlZ2luKCksIHBvc0xpc3QuZW5kKCkpIC0gcG9zTGlzdC5iZWdpbigpKTsKCiAgICBsbCBhbnMgPSAwOwogICAgRmVud2lja19UcmVlIGJpdCgoaW50KXBvc0xpc3Quc2l6ZSgpKTsKCiAgICBmb3IgKGludCBpdCA6IGlkTGlzdCkgewogICAgICAgIGludCBsID0gU3R1ZGVudHNbaXRdLnggLSBTdHVkZW50c1tpdF0ucjsKICAgICAgICBpbnQgciA9IFN0dWRlbnRzW2l0XS54ICsgU3R1ZGVudHNbaXRdLnI7CgogICAgICAgIGludCBMID0gbG93ZXJfYm91bmQocG9zTGlzdC5iZWdpbigpLCBwb3NMaXN0LmVuZCgpLCBsKSAtIHBvc0xpc3QuYmVnaW4oKSArIDE7CiAgICAgICAgaW50IFIgPSB1cHBlcl9ib3VuZChwb3NMaXN0LmJlZ2luKCksIHBvc0xpc3QuZW5kKCksIHIpIC0gcG9zTGlzdC5iZWdpbigpOwogICAgICAgIGlmIChMIDw9IFIpIGFucyArPSBiaXQuZ2V0X3JhbmdlKEwsIFIpOwoKICAgICAgICBpbnQgaWR4cG9zID0gbG93ZXJfYm91bmQocG9zTGlzdC5iZWdpbigpLCBwb3NMaXN0LmVuZCgpLCBTdHVkZW50c1tpdF0ueCkgLSBwb3NMaXN0LmJlZ2luKCkgKyAxOwogICAgICAgIGJpdC51cGQoaWR4cG9zLCAxKTsKICAgIH0KICAgIHJldHVybiBhbnM7Cn0KCmxsIENvdW50Mihjb25zdCB2ZWN0b3I8aW50PiAmQmlnSUQsIGNvbnN0IHZlY3RvcjxpbnQ+ICZwb3NMaXN0LCBjb25zdCB2ZWN0b3I8aW50PiAmTG93SUQsIGJvb2wgZmxhZykgewogICAgaWYgKEJpZ0lELmVtcHR5KCkgfHwgTG93SUQuZW1wdHkoKSB8fCBwb3NMaXN0LmVtcHR5KCkpIHJldHVybiAwOwogICAgbGwgYW5zID0gMDsKICAgIEZlbndpY2tfVHJlZSBiaXQoKGludClwb3NMaXN0LnNpemUoKSk7CgogICAgaW50IGogPSAwOwogICAgZm9yIChpbnQgaXQgOiBMb3dJRCkgewogICAgICAgIHdoaWxlIChqIDwgKGludClCaWdJRC5zaXplKCkgJiYgU3R1ZGVudHNbQmlnSURbal1dLnIgPj0gKGZsYWcgPyBTdHVkZW50c1tpdF0uciA6IChTdHVkZW50c1tpdF0uciArIDEpKSkgewogICAgICAgICAgICBpbnQgaWR4cG9zID0gbG93ZXJfYm91bmQocG9zTGlzdC5iZWdpbigpLCBwb3NMaXN0LmVuZCgpLCBTdHVkZW50c1tCaWdJRFtqXV0ueCkgLSBwb3NMaXN0LmJlZ2luKCkgKyAxOwogICAgICAgICAgICBiaXQudXBkKGlkeHBvcywgMSk7CiAgICAgICAgICAgIGorKzsKICAgICAgICB9CgogICAgICAgIGludCBsID0gU3R1ZGVudHNbaXRdLnggLSBTdHVkZW50c1tpdF0ucjsKICAgICAgICBpbnQgciA9IFN0dWRlbnRzW2l0XS54ICsgU3R1ZGVudHNbaXRdLnI7CiAgICAgICAgaW50IEwgPSBsb3dlcl9ib3VuZChwb3NMaXN0LmJlZ2luKCksIHBvc0xpc3QuZW5kKCksIGwpIC0gcG9zTGlzdC5iZWdpbigpICsgMTsKICAgICAgICBpbnQgUiA9IHVwcGVyX2JvdW5kKHBvc0xpc3QuYmVnaW4oKSwgcG9zTGlzdC5lbmQoKSwgcikgLSBwb3NMaXN0LmJlZ2luKCk7CiAgICAgICAgaWYgKEwgPD0gUikgYW5zICs9IGJpdC5nZXRfcmFuZ2UoTCwgUik7CiAgICB9CiAgICByZXR1cm4gYW5zOwp9Cgp2b2lkIGluaXQoKSB7CiAgICB2YWwuY2xlYXIoKTsKICAgIEZPUihpLCAxLCBuKSB2YWwucHVzaF9iYWNrKFN0dWRlbnRzW2ldLnQpOwogICAgc29ydCh2YWwuYmVnaW4oKSwgdmFsLmVuZCgpKTsKICAgIHZhbC5yZXNpemUodW5pcXVlKHZhbC5iZWdpbigpLCB2YWwuZW5kKCkpIC0gdmFsLmJlZ2luKCkpOwoKICAgIGludCBtID0gKGludCl2YWwuc2l6ZSgpOwogICAgRk9SKGksIDEsIG0pIHsKICAgICAgICBJRFtpXS5jbGVhcigpOwogICAgICAgIFBPU1tpXS5jbGVhcigpOwogICAgfQoKICAgIEZPUihpLCAxLCBuKSB7CiAgICAgICAgaW50IGNvbXAgPSBsb3dlcl9ib3VuZCh2YWwuYmVnaW4oKSwgdmFsLmVuZCgpLCBTdHVkZW50c1tpXS50KSAtIHZhbC5iZWdpbigpICsgMTsKICAgICAgICBTdHVkZW50c1tpXS50ID0gY29tcDsKICAgICAgICBJRFtjb21wXS5wdXNoX2JhY2soaSk7CiAgICAgICAgUE9TW2NvbXBdLnB1c2hfYmFjayhTdHVkZW50c1tpXS54KTsKICAgIH0KCiAgICBGT1IoY250LCAxLCBtKSB7CiAgICAgICAgc29ydChJRFtjbnRdLmJlZ2luKCksIElEW2NudF0uZW5kKCksIFsmXShpbnQgYSwgaW50IGIpewogICAgICAgICAgICByZXR1cm4gU3R1ZGVudHNbYV0uciA+IFN0dWRlbnRzW2JdLnI7CiAgICAgICAgfSk7CiAgICAgICAgc29ydChQT1NbY250XS5iZWdpbigpLCBQT1NbY250XS5lbmQoKSk7CiAgICAgICAgUE9TW2NudF0ucmVzaXplKHVuaXF1ZShQT1NbY250XS5iZWdpbigpLCBQT1NbY250XS5lbmQoKSkgLSBQT1NbY250XS5iZWdpbigpKTsKICAgIH0KCiAgICBGT1IoaSwgMSwgbSkgZHBbaV1bMF0gPSBDb3VudDEoSURbaV0sIFBPU1tpXSk7CgogICAgRk9SKGksIDEsIG0pIHsKICAgICAgICBGT1IoaiwgaSArIDEsIG0pIHsKICAgICAgICAgICAgaWYgKHZhbFtqIC0gMV0gLSB2YWxbaSAtIDFdID49IGRlbHRhKSBicmVhazsKICAgICAgICAgICAgbGwgY3VyID0gQ291bnQyKElEW2ldLCBQT1NbaV0sIElEW2pdLCAxKSArIENvdW50MihJRFtqXSwgUE9TW2pdLCBJRFtpXSwgMCk7CiAgICAgICAgICAgIGRwW2ldW2ogLSBpXSA9IGN1ciArIGRwW2ldW2ogLSBpIC0gMV07CiAgICAgICAgfQogICAgfQp9Cgp2b2lkIGdpYWkoKSB7CiAgICB3aGlsZSAocS0tKSB7CiAgICAgICAgaW50IGwsIHI7CiAgICAgICAgY2luID4+IGwgPj4gcjsKICAgICAgICBpbnQgTCA9IGxvd2VyX2JvdW5kKHZhbC5iZWdpbigpLCB2YWwuZW5kKCksIGwpIC0gdmFsLmJlZ2luKCkgKyAxOwogICAgICAgIGludCBSID0gdXBwZXJfYm91bmQodmFsLmJlZ2luKCksIHZhbC5lbmQoKSwgcikgLSB2YWwuYmVnaW4oKTsKCiAgICAgICAgbGwgYW5zID0gMDsKICAgICAgICBGT1IoaSwgTCwgUikgYW5zICs9IGRwW2ldW1IgLSBpXTsKICAgICAgICBjb3V0IDw8IGFucyA8PCAnICc7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7IGNvdXQudGllKDApOwoKICAgICNkZWZpbmUgbmFtZSAibG92ZXNoYXJpbmciCgogICAgaWYgKGZvcGVuKG5hbWUiLmlucCIsICJyIikpIHsKICAgICAgICBmcmVvcGVuKG5hbWUiLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4obmFtZSIub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQoKICAgIG5oYXAoKTsKICAgIGluaXQoKTsKICAgIGdpYWkoKTsKCiAgICByZXR1cm4gMDsKfQo=