#include <bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define si short int
    #define vi vector<ll>
    #define vii vector<vi>
    #define vip vector<pair<ll,ll>>

    //  BRUTE FORCE
    ll resi(ll a[], ll n, ll l, ll r);

    int main()
    {
        ios_base::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        ll n,q;
        cin>>n>>q;
        ll a[n+1];
        for(ll i=1;i<=n;i++)
            cin>>a[i];
        ll b[q];
        for(ll i=0;i<q;i++)
        {
            ll l,r;
            cin>>l>>r;
            b[i]=resi(a,n,l,r);
        }
        for(ll i=0;i<q;i++)
            cout<<b[i]<<endl;
        return 0;
    }

    ll resi(ll a[], ll n, ll l, ll r)
    {
        ll kon=a[l]&a[l+1];
        if(kon==0) return 0;
        for(ll i=l+2;i<=r;i++)
        {
            kon=kon&a[i];
            if(kon==0) return 0;
        }
        return (ll)(kon);
    }



    /*
    vector<pair<pair<ll,ll>,ll>> st;

    ll formiraj(ll l, ll r, ll a[], ll n)
    {
        if(l<r)
        {
            ll mid=l+(r-l)/2;
            ll kon=formiraj(l,mid,a,n) & formiraj(mid+1,r,a,n);
            st.push_back(make_pair(make_pair(l,r),kon));
            return kon;
        }
        else
            {st.push_back(make_pair(make_pair(l,l),a[l])); return a[l];}
    }


    int main(void)
    {
        ll n,q;
        cin>>n>>q;
        ll a[n+1];
        for(ll i=1;i<=n;i++)
            cin>>a[i];
        st.push_back(make_pair(make_pair(1,n),formiraj(1,n,a,n)));
        while(q--)
        {
            ll l,r;
            cin>>l>>r;
            bool radi=false;
            if(r<=1+(n-1)/2 && l>=1)
            {
                bool radi=false;
                for(ll i=0;i<st.size() && radi==false;i++)
                {
                    if(st[i].first.first==l && st[i].first.second==r) cout<<st[i].second<<endl, radi=true;;
                }
                cout<<"prvi"<<endl;
            }
            else if(l>=1+(n-1)/2 && r<=n)
            {
                bool radi=false;
                for(ll i=0;i<st.size() && radi==false;i++)
                    if(st[i].first.first==l && st[i].first.second==r) cout<<st[i].second<<endl, radi=true;
                cout<<"drugi"<<endl;
            }
            else
            {
                bool radi=false;
                ll dokle=1+(n-1)/2;
                ll left, right;
                for(ll i=0;i<st.size() && radi==false;i++)
                    if(st[i].first.first==l && st[i].first.second==dokle) left=st[i].second, radi=true;

                radi=false;
                for(ll i=0;i<st.size() && radi==false;i++)
                    if(st[i].first.first==dokle+1 && st[i].first.second==r) right=st[i].second, radi=true;
                cout<<(ll)(left&right)<<endl;
                cout<<"treci"<<endl;
                cout<<left<<' '<<right<<endl;
            }
        }
    }
    */