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
46
47
48
49
50
51
52
53
def new_state(a, b, current_state):
    if (x := current_state * b) >= (b := current_state + a):
        return x
    return b


def read_input_stream():
    n, q = [int(x) for x in input().split(' ')]
    a_b_pairs = []
    for i in range(n):
        a_b_pairs.append(tuple(map(int, input().split(' '))))

    xlr_triplets = []
    for i in range(q):
        xlr_triplets.append(tuple(map(int, input().split(' '))))

    return a_b_pairs, xlr_triplets


def read_input(file):
    n, q = map(int, file.readline().split())

    a_b_pairs = []
    for _ in range(n):
        a_b_pairs.append(tuple(map(int, file.readline().split())))

    xlr_triplets = []
    for _ in range(q):
        xlr_triplets.append(tuple(map(int, file.readline().split())))

    return a_b_pairs, xlr_triplets


modulo = 10 ** 9 + 7

def calculate(xlr_triplets, ab_pairs):

    for x, l, r in xlr_triplets:
        result = x
        for i in range(l, r):
            result = new_state(ab_pairs[i][0], ab_pairs[i][1], result) % modulo
        print(result % modulo)

if __name__ == '__main__':
    ab_pairs, xlr_triplets = read_input_stream()

    # with open("input.txt", "r") as f:
    #     ab_pairs, xlr_triplets = read_input(f)
    # import time
    # s = time.time()
    calculate(xlr_triplets, ab_pairs)
    # e = time.time()
    # print(e-s)