# https://yukicoder.me/problems/no/3305 from collections import deque def main(): N, Q = map(int, input().split()) A = list(map(int, input().split())) queries = [] for _ in range(Q): l, r = map(int ,input().split()) queries.append((l - 1, r - 1)) next_ = [-1] * N stack = deque() for i in range(N): if len(stack) == 0: stack.append((i, A[i])) else: while len(stack) > 0 and stack[-1][1] < A[i]: p, _ = stack.pop() next_[p] = i stack.append((i, A[i])) k = 0 while 1 << k < N: k += 1 max_k = k next_list = [[-1] * N for _ in range(max_k + 1)] next_list[0] = next_ for k in range(1, max_k + 1): for i in range(N): p = next_list[k - 1][i] if p != -1: next_list[k][i] = next_list[k - 1][p] for l, r in queries: l0 = l ans = 1 for k in reversed(range(max_k + 1)): if next_list[k][l0] != -1 and next_list[k][l0] <= r: l0 = next_list[k][l0] ans += (1 << k) answer = r - l + 1 - ans print(answer) if __name__ == "__main__": main()