#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;
            niz[i+1]=true;

        }
    }
    if(n>1000)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;
            if(niz[l] or niz[d] or niz[l+1] or niz[d-1])printf("0\n");
            else{
                    l++;
                    d--;
                for(int i=1+l;i<d;i+=3){
                    if(niz[i]){
                        printf("0\n");
                        qw=true;
                        break;
                    }
                }
                if(!qw)
                printf("1\n");
            }
        }
    }

return 0;
}