import sys input = sys.stdin.buffer.readline sys.setrecursionlimit(10 ** 7) N, Q = map(int, input().split()) D = (N + 1).bit_length() P = list(map(lambda x: int(x) - 1, input().split())) par = [[N] * (N + 1) for _ in range(D)] stack = [] for i, p in enumerate(P): while stack and P[stack[-1]] < p: j = stack.pop() par[0][j] = i stack.append(i) while stack: j = stack.pop() par[0][j] = N for d in range(1, D): for i in range(N): par[d][i] = par[d-1][par[d-1][i]] for _ in range(Q): _, L, R = map(int, input().split()) x = L - 1 ans = 1 for d in reversed(range(D)): if par[d][x] >= R: continue ans += 1 << d x = par[d][x] print(ans)