#include <stdio.h>
#include <stdlib.h>
#include <map>

#define ull unsigned long long

using namespace std;

long N,Q;
long A[100005],L,R,K;

map< pair<long,long>,long >m;

int main()
{
    scanf("%ld%ld",&N,&Q);

    for(long i=0;i<N;i++) scanf("%ld",&A[i]);

    for(long i=0;i<=N;i++)
    {
        m[make_pair(i,i)]=A[i];
        if(A[i]==0) continue;
        for(int j=i+1;j<=N;j++) {
                m[make_pair(i,j)]=m[make_pair(i,j-1)] & A[j];
                if(m[make_pair(i,j)]==0) break;
        }
    }
    for(long i=0;i<Q;i++){
     scanf("%ld%ld",&L,&R);
     if(L>R){
      long t=R;
      R=L;
      L=t;
     }
     printf("%ld\n",m[make_pair(L-1,R-1)]);
    }

    return 0;
}