#include <iostream>

#define DUZINA 31

using namespace std;

struct upit{
    int l;
    int r;

};

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);


    int n,q;
    cin>>n>>q;
    int a[n];
    upit upiti[q];

    for(int i=0;i<n;i++){
        cin>>a[i];

    }

    for(int i=0;i<q;i++){
        cin>>upiti[i].l>>upiti[i].r;
    }
    int bitovi[DUZINA];

    for(int i=0;i<q;i++){
        int maska=1;
        for(int m=0;m<DUZINA;m++){
            bitovi[m]=1;
            for(int j=upiti[i].l-1;j<upiti[i].r;j++){
                int priv=a[j]&maska;
                if(priv==0){
                    bitovi[m]=0;
                    break;
                }
            }
            maska=1<<(m+1);
        }
        int rez=0;
        for(int m=0;m<DUZINA;m++){
            rez+=bitovi[m]<<m;
        }
        cout<<rez<<"\n";
    }




    return 0;

}