Link to this code: https://cses.fi/paste/1dfff1f04e9b2a1fd76957/
""" 777 """

INF = float('inf')


class SparseTable:
    def __init__(self, N):
        self.N = N
        self.L = N.bit_length()
        self.table = [[INF] * self.L for _ in range(self.N)]

    def build(self, arr):
        for i in range(self.N):
            self.table[i][0] = arr[i]
        for k in range(1, self.L):
            for i in range(self.N - (1 << k) + 1):
                self.table[i][k] = min(self.table[i][k - 1], self.table[i + (1 << (k - 1))][k - 1])

    def query(self, l, r):
        k = (r - l + 1).bit_length() - 1
        x = 1 << k
        return min(self.table[l][k], self.table[r - x + 1][k])


N, Q = [int(x) for x in input().split()]
arr = [int(x) for x in input().split()]
st = SparseTable(N)
st.build(arr)
qs = []
for _ in range(Q):
    l, r = [int(x) for x in input().split()]
    # result = st.query(l, r) # 1-based
    res = st.query(l - 1, r - 1)  # 0-based
    qs.append(res)

for res in qs:
    print(res)