#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 75e3 + 5;
const int MOD = 1e9;
const int MX = 1e9;
struct Function {
int x1, x2, y1, a, b, y2;
};
int n, q;
Function f[N];
struct PersistentSegTree {
struct Node {
int l = 0, r = 0;
ll cnt = 0;
ll sum = 0;
};
int n;
vector<Node> seg;
PersistentSegTree(int n) : n(n) {
seg.push_back(Node());
}
int update(int pre, int l, int r, int u, int v, ii val) {
if (l > v || r < u) return pre;
int cur = seg.size();
seg.push_back(seg[pre]);
if (u <= l && r <= v) {
seg[cur].cnt += val.first;
seg[cur].sum += val.second;
return cur;
}
int mid = (l + r) >> 1;
seg[cur].l = update(seg[pre].l, l, mid, u, v, val);
seg[cur].r = update(seg[pre].r, mid + 1, r, u, v, val);
return cur;
}
ll get(int rt, int l, int r, int pos) {
if (l > pos || r < pos) return 0;
ll res = seg[rt].cnt * pos + seg[rt].sum;
if (l == r) return res;
int mid = (l + r) >> 1;
if (pos <= mid) {
res += get(seg[rt].l, l, mid, pos);
}
else {
res += get(seg[rt].r, mid + 1, r, pos);
}
return res;
}
int update(int pre, int u, int v, ii val) {
return update(pre, 1, n, u, v, val);
}
ll get(int rt, int pos) {
return get(rt, 1, n, pos);
}
};
int root[N];
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
for (int i = 1; i <= n; i++) {
int x1, x2, y1, a, b, y2;
cin >> x1 >> x2 >> y1 >> a >> b >> y2;
f[i] = {x1, x2, y1, a, b, y2};
}
PersistentSegTree pst(MX);
for (int i = 1; i <= n; i++) {
auto [x1, x2, y1, a, b, y2] = f[i];
root[i] = root[i - 1];
root[i] = pst.update(root[i], 1, x1, {0, y1});
root[i] = pst.update(root[i], x1 + 1, x2, {a, b});
root[i] = pst.update(root[i], x2 + 1, MX, {0, y2});
}
cin >> q;
ll last = 0;
while (q--) {
int l, r, x;
cin >> l >> r >> x;
x = (x + last) % MOD;
last = pst.get(root[r], x) - pst.get(root[l - 1], x);
cout << last << '\n';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSA3NWUzICsgNTsgCmNvbnN0IGludCBNT0QgPSAxZTk7IApjb25zdCBpbnQgTVggPSAxZTk7ICAKCnN0cnVjdCBGdW5jdGlvbiB7CglpbnQgeDEsIHgyLCB5MSwgYSwgYiwgeTI7IAp9OyAKCmludCBuLCBxOyAKRnVuY3Rpb24gZltOXTsgCgpzdHJ1Y3QgUGVyc2lzdGVudFNlZ1RyZWUgewoJc3RydWN0IE5vZGUgewoJCWludCBsID0gMCwgciA9IDA7ICAKCQlsbCBjbnQgPSAwOyAKCQlsbCBzdW0gPSAwOyAKCX07CgoJaW50IG47IAoJdmVjdG9yPE5vZGU+IHNlZzsgIAoKCVBlcnNpc3RlbnRTZWdUcmVlKGludCBuKSA6IG4obikgewoJCXNlZy5wdXNoX2JhY2soTm9kZSgpKTsgCgl9CgoJaW50IHVwZGF0ZShpbnQgcHJlLCBpbnQgbCwgaW50IHIsIGludCB1LCBpbnQgdiwgaWkgdmFsKSB7CgkJaWYgKGwgPiB2IHx8IHIgPCB1KSByZXR1cm4gcHJlOyAKCQlpbnQgY3VyID0gc2VnLnNpemUoKTsgIAoJCXNlZy5wdXNoX2JhY2soc2VnW3ByZV0pOyAKCQlpZiAodSA8PSBsICYmIHIgPD0gdikgewoJCQlzZWdbY3VyXS5jbnQgKz0gdmFsLmZpcnN0OyAKCQkJc2VnW2N1cl0uc3VtICs9IHZhbC5zZWNvbmQ7IAoJCQlyZXR1cm4gY3VyOyAKCQl9CgkJaW50IG1pZCA9IChsICsgcikgPj4gMTsgCgkJc2VnW2N1cl0ubCA9IHVwZGF0ZShzZWdbcHJlXS5sLCBsLCBtaWQsIHUsIHYsIHZhbCk7IAoJCXNlZ1tjdXJdLnIgPSB1cGRhdGUoc2VnW3ByZV0uciwgbWlkICsgMSwgciwgdSwgdiwgdmFsKTsgCgkJcmV0dXJuIGN1cjsgCgl9CgoJbGwgZ2V0KGludCBydCwgaW50IGwsIGludCByLCBpbnQgcG9zKSB7CgkJaWYgKGwgPiBwb3MgfHwgciA8IHBvcykgcmV0dXJuIDA7ICAKCQlsbCByZXMgPSBzZWdbcnRdLmNudCAqIHBvcyArIHNlZ1tydF0uc3VtOwoJCWlmIChsID09IHIpIHJldHVybiByZXM7ICAgCgkJaW50IG1pZCA9IChsICsgcikgPj4gMTsgCgkJaWYgKHBvcyA8PSBtaWQpIHsKCQkJcmVzICs9IGdldChzZWdbcnRdLmwsIGwsIG1pZCwgcG9zKTsgCgkJfQoJCWVsc2UgewoJCQlyZXMgKz0gZ2V0KHNlZ1tydF0uciwgbWlkICsgMSwgciwgcG9zKTsgCgkJfQoJCXJldHVybiByZXM7IAoJfQoKCWludCB1cGRhdGUoaW50IHByZSwgaW50IHUsIGludCB2LCBpaSB2YWwpIHsKCQlyZXR1cm4gdXBkYXRlKHByZSwgMSwgbiwgdSwgdiwgdmFsKTsKCX0KCglsbCBnZXQoaW50IHJ0LCBpbnQgcG9zKSB7CgkJcmV0dXJuIGdldChydCwgMSwgbiwgcG9zKTsKCX0KfTsgCgppbnQgcm9vdFtOXTsgCgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgCgljaW4udGllKG51bGxwdHIpOyAJCgljaW4gPj4gbjsgCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKCQlpbnQgeDEsIHgyLCB5MSwgYSwgYiwgeTI7IAoJCWNpbiA+PiB4MSA+PiB4MiA+PiB5MSA+PiBhID4+IGIgPj4geTI7IAoJCWZbaV0gPSB7eDEsIHgyLCB5MSwgYSwgYiwgeTJ9OyAKCX0KCglQZXJzaXN0ZW50U2VnVHJlZSBwc3QoTVgpOyAKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCWF1dG8gW3gxLCB4MiwgeTEsIGEsIGIsIHkyXSA9IGZbaV07IAoJCXJvb3RbaV0gPSByb290W2kgLSAxXTsgCgkJcm9vdFtpXSA9IHBzdC51cGRhdGUocm9vdFtpXSwgMSwgeDEsIHswLCB5MX0pOyAKCQlyb290W2ldID0gcHN0LnVwZGF0ZShyb290W2ldLCB4MSArIDEsIHgyLCB7YSwgYn0pOyAKCQlyb290W2ldID0gcHN0LnVwZGF0ZShyb290W2ldLCB4MiArIDEsIE1YLCB7MCwgeTJ9KTsgCgl9CgoJY2luID4+IHE7IAoKCWxsIGxhc3QgPSAwOyAgCgl3aGlsZSAocS0tKSB7CgkJaW50IGwsIHIsIHg7IAoJCWNpbiA+PiBsID4+IHIgPj4geDsKCQl4ID0gKHggKyBsYXN0KSAlIE1PRDsgCgkJbGFzdCA9IHBzdC5nZXQocm9vdFtyXSwgeCkgLSBwc3QuZ2V0KHJvb3RbbCAtIDFdLCB4KTsgCgkJY291dCA8PCBsYXN0IDw8ICdcbic7Cgl9Cn0K