1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <cstdint>
#include <vector>
#include <utility>

namespace {
	using std::ios_base, std::cin, std::cout;
	using std::vector, std::pair;
	using event_t = vector<pair<uint64_t, uint64_t>>;

	constexpr uint64_t MODULO = 1'000'000'007;
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);

	uint64_t n, q;
	cin >> n >> q;
	event_t aibi(n + 1);
	for (uint64_t i = 1; i <= n; ++i) {
		uint64_t ai, bi;
		cin >> ai >> bi;
		aibi[i] = { ai, bi };
	}
	for (uint64_t i = 0; i < q; ++i) {
		uint64_t xi, li, ri;
		cin >> xi >> li >> ri;
		for (uint64_t w = li + 1; w <= ri; ++w) {
			if (aibi[w].second == 1 || (xi <= aibi[w].first / (aibi[w].second - 1))
					== ((xi % MODULO) <= aibi[w].first / (aibi[w].second - 1))) {
				xi = xi % MODULO;
			}
			if (aibi[w].second == 1 || (xi <= aibi[w].first / (aibi[w].second - 1))) {
				xi += aibi[w].first;
			} else {
				if (xi > static_cast<uint64_t>(-1) / aibi[w].second) {
					xi = xi % MODULO;
				}
				xi *= aibi[w].second;
			}
		}
		cout << (xi % MODULO) << '\n';
	}
}