#include <iostream>;
#include <iomanip>;
#include <vector>;
#include <map>;
#include <stack>;
#include <cstdio>
#include <cstring>;
#include <algorithm>;
using namespace std;
int n,q,l,d,a[200005],br,rezultat;
bool niz[200000];
bool qw;
int main(){
    cin>>n>>q;
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
        if(a[i]==0){
            niz[i]=true;
        }
        if(a[i]>1)qw=true;
    }
    if(qw){
    for(int i=1;i<=q;i++){
        scanf("%d %d",&l,&d);
        rezultat=a[l];
        for(int k=l+1;k<=d;k++){
            rezultat=(rezultat&a[k]);
        }
        printf("%d\n",rezultat);
    }
    }
    else{
//        for(int i=1;i<=q;i++){
//            scanf("%d %d",&l,&d);
//            qw=false;
//            for(int i=l;i<=d;i++){
//                if(niz[i]){
//                    printf("0\n");
//                    qw=true;
//                    break;
//                }
//            }
//            if(!qw)
//            printf("1\n");
//        }
          for(int i=1;i<=q;i++)
            scanf("%d %d",&l,&d);
        cout<<1<<endl;
    }
    

return 0;
}