#include <iostream>
#include <cmath>

using namespace std;

int main(){
    int n;
    cin >> n;
    int upita;
    cin >> upita;
    int brojevi[n];
    for(int i = 0; i < n; i++){
        cin >> brojevi[i];
    }
    for(int i = 0; i < upita; i++){
        int odb; cin >> odb;
        int dob; cin >> dob;
        int duzina = 0;
        for(int j = odb - 1; j < dob; j++){
            for(int k = 0; k < 100000; k++){
                if(brojevi[j] <= pow(2, k)){
                    if(duzina < k){
                        duzina = k;
                    }
                    goto stop;
                }
            }
            stop:{}
        }
        int resenje[duzina];
        int x = abs(odb - dob);
        int arej[duzina][x];
        for(int broj = odb - 1; broj < dob; broj++){
            for(int duzinatr = 0; duzinatr < duzina; duzinatr++){
                if(brojevi[broj] == 1){
                    arej[duzinatr][broj] = 1;
                    brojevi[broj] -= 1;
                    goto stop1;
                }
                if(brojevi[broj] % 2 == 1){
                    arej[duzinatr][broj] = 1;
                    brojevi[broj] = (brojevi[broj] - 1)/2;
                }else{
                    arej[duzinatr][broj] = 0;
                    brojevi[broj] = brojevi[broj]/2;
                }
            stop1:{}
            }
        }
        for(int i = 0; i < x; i++){
            for(int j = 0; j < duzina; j++){
                if(arej[i][j] == 0){
                    resenje[j] = 0;
                        goto stop2;
                }else{
                    resenje[j] = 1;
                }
            }
        stop2:{}
        }
        int konacno = 0;
        for(int k = 0; k < duzina; k++){
            if(resenje[k] == 1){
                konacno += pow(2, k);
            }
        }
        cout << konacno;
    }
}