#include<stdio.h>
int a[1<<21], base;
int max(int a, int b){ return a>b?a:b; }
int f(int s, int e)
{
    int m = 0;
    while(s<e)
    {
        if( s&1 ) m=max(m,a[s]), s++;
        if( ~e&1 ) m=max(m,a[e]), e--;
        s>>=1, e>>=1;
    }
    if( s == e ) m=max(m,a[s]);
    return m;
}
int g(int s, int e)
{
    int i, m= 0;
    for( i = s+base ; i <= e+base ; i++ )
        m = max(a[i], m);
    return m;
}
main()
{
    int i, n, k, s, e;
    freopen(".10.in","r",stdin);
    freopen(".10.ou","w",stdout);
    scanf("%d%d", &n, &k);
    for( base = 1 ; base < n ; base<<=1 );
    for( i = 0 ; i < n ; i++ )
        scanf("%d", &a[base+i]);
    for( i = base-1 ; i >= 1 ; i-- )
        a[i] = max(a[i*2], a[i*2+1]);
    while(k--)
    {
        scanf("%d%d",&s,&e); s--,e--;
        printf("%d\n", g(s,e));//f(s+base,e+base));
    }
}
