#include <bits/stdc++.h>
using namespace std;

long long a[200005];
long long st[400005];

long long baseNum = 0;

void build(long long id, long long l, long long r){
    if(l == r){
        st[id] = a[l];
        return;
    }

    long long mid = (l + r) / 2;
    build(id * 2 + 1, l, mid);
    build(id * 2 + 2, mid + 1, r);

    st[id] = st[id * 2 + 1] & st[id * 2 + 2];
}

long long gSum(long long x, long long y, long long id, long long l, long long r){
    if(l > y || r < x){
        return baseNum;
    }
    if(x <= l && r <= y){
        return st[id];
    }

    long long mid = (l + r) / 2;
    long long v1 = gSum(x, y, id * 2 + 1, l, mid);
    long long v2 = gSum(x, y, id * 2 + 2, mid + 1, r);

    long long res = v1 & v2;
    return res;
}

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

    long long n, t;
    cin >> n >> t;
    for(long long i = 0; i < n; ++i){
        cin >> a[i];
    }

    build(0, 0, n - 1);
    for(long long i = 0; i <= 34; ++i){ ///MOZDA PREVISE
        baseNum |= (1 << i);
    }

    //cout << baseNum << "\n";
    //return 0;

    while(t--){
        long long l, r;
        cin >> l >> r;
        --l;
        --r;
        long long x = gSum(l, r, 0, 0, n - 1);
        cout << x << "\n";
    }
    return 0;
}