#pragma GCC optimize(2)
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
int m, n;
struct Task{
int p;
int v;
};
vector<Task> _taskList[10000010];
//zhuxishu
struct Node{
// int l;
// int r;
int left;
int right;
int count;
long long sum;
} _xds[30000010];
int _cc;
int _banben[100010];
inline int NewNode() {
return ++_cc;
}
inline int Copy(int x) {
_xds[++_cc] = _xds[x];
return _cc;
}
void Push(int& x, int l, int r, int p, int v) {
// if (!x) x = NewNode();
// cout << "Push(" << x << ',' << l << ',' << r << ',' << p << ',' << v << endl;
// if (p < l || p > r) while (true);
_xds[x].count+=v;
_xds[x].sum+=p*v;
if (l!=r) {
int mid = l+r>>1;
if (p<=mid) {
_xds[x].left = Copy(_xds[x].left);
Push(_xds[x].left, l, mid, p, v);
return;
}
_xds[x].right = Copy(_xds[x].right);
Push(_xds[x].right, mid+1, r, p, v);
}
}
//
long long Query(int x, int l, int r, long long k) {
// cout << x << ',' << l << ',' << r << ',' << k << endl;
if (l==r || k >= _xds[x].count) return _xds[x].sum;
int mid = l+r>>1;
int countl = _xds[_xds[x].left].count;
if (k<=countl) return Query(_xds[x].left, l, mid, k);
return _xds[_xds[x].left].sum+Query(_xds[x].right, mid+1, r, k-countl);
}
inline long long Solve(int x, int k) {
return Query(_banben[x], 1, 10000000, k);
}
int main() {
int s, e, p;
int x, a, b, c;
Task solo;
long long k;
long long pre = 1ll;
freopen("P3168.in", "r", stdin);
freopen("P3168.out", "w", stdout);
scanf("%d%d", &m, &n);
for (int i = 0; i < m; i++) {
scanf("%d%d%d", &s, &e, &p);
solo.p = p;
solo.v = 1;
_taskList[s].push_back(solo);
if (e < n) {
solo.v = -1;
_taskList[e+1].push_back(solo);
}
}
for (int i = 1; i <= n; i++) {
_banben[i] = Copy(_banben[i-1]);
for (int j = 0; j < _taskList[i].size(); j++) {
// cout << i << ',' << _taskList[i][j].p << ',' << _taskList[i][j].v << endl;
Push(_banben[i], 1, 10000000, _taskList[i][j].p, _taskList[i][j].v);
}
}
// cout << _xds[0].count << ',' << _xds[0].left << ',' << _xds[0].right << ',' << _xds[0].sum << endl;
// cout << _cc << endl;
for (int i = 0; i < n; i++) {
scanf("%d%d%d%d", &x, &a, &b, &c);
k = 1+(a*pre+b)%c;
pre = Solve(x, k);
printf("%lld\n", pre);
}
fclose(stdin);
fclose(stdout);
return 0;
}