#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int mxn = 100 * 1000 + 10;
const int mxl = 20;
ll rmq[ mxl ][ mxn ];
ll lg[ mxn ];
ll v[ mxn ];
ll n, m;
ll l;
int main()
{
freopen("rmq.in", "r", stdin);
freopen("rmq.out", "w", stdout);
scanf("%ld %ld", &n, &m);
for(ll i = 1; i <= n; i++)
scanf("%ld", &v[ i ]);
lg[ 1 ] = 0;
for(ll i = 2; i <= n; i++)
lg[ i ] = lg[ i / 2 ] + 1;
for(ll i = 1; i <= n; i++)
rmq[ 0 ][ i ] = v[ i ];
for (ll i = 1; (1 << i) <= n; i++)
for (ll j = 1; j <= n - (1 << i) + 1; j++){
l = 1 << (i - 1);
rmq[ i ][ j ]= min(rmq[ i - 1 ][ j ], rmq[ i - 1 ][ j + l ]);
}
ll x,y,diff,sh;
for (ll i = 1; i <= m; i++){
scanf("%ld %ld", &x, &y);
diff = y - x + 1;
l = lg[ diff ];
sh = diff - (1<<l);
printf("%ld\n", min(rmq[ l ][ x ], rmq[ l ][ x + sh ]));
}
return 0;
}