N, B, Q = map(int, input().split()) bit = [0] * (N+10) def add(x, v): x += 1 while x < len(bit): bit[x] += v x += x & -x def getSum(x): x += 1 ans = 0 while x: ans += bit[x] x -= x & -x return ans xyz = [(1,1,1)] * 110000 for i in range(1, 110000): x, y, z = xyz[i-1] xyz[i] = (x + 1) % B, (3 * y + 2 * (x+1) * z) % B, 3 * z % B for _ in range(Q): l, m, r = map(int, input().split()) add(l, 1) add(r + 1, -1) print(*xyz[getSum(m)])