class Bit: def __init__(self, n): self.size = n self.n0 = 1 << (n.bit_length() - 1) self.tree = [0] * (n + 1) def range_sum(self, l, r): return self.sum(r - 1) - self.sum(l - 1) def sum(self, i): i += 1 s = 0 while i > 0: s += self.tree[i] i -= i & -i return s def get(self, i): return self.sum(i) - self.sum(i - 1) def add(self, i, x): i += 1 while i <= self.size: self.tree[i] += x i += i & -i def lower_bound(self, x): pos = 0 plus = self.n0 while plus > 0: if pos + plus <= self.size and self.tree[pos + plus] < x: x -= self.tree[pos + plus] pos += plus plus //= 2 return pos n = int(input()) bit_a = Bit(n) bit_b = Bit(n) event = [] for i in range(n): a, t = map(int, input().split()) bit_b.add(i, a) event.append((0, t, a, i)) event.append((1, t + a, a, i)) Q = int(input()) for i in range(Q): d, l, r = map(int, input().split()) event.append((2, d, l, r, i)) ans = [0] * Q event.sort(key=lambda x:x[1]) for query in event: if query[0] == 0: d, a, i = query[1:] bit_a.add(i, -1) bit_b.add(i, d - 1) elif query[0] == 1: d, a, i = query[1:] bit_a.add(i, 1) bit_b.add(i, -d + 1) else: d, l, r, i = query[1:] a = bit_a.range_sum(l - 1, r) b = bit_b.range_sum(l - 1, r) ans[i] = a * d + b print(*ans, sep="\n")