#include <bits/stdc++.h>
using namespace std;
long niz[1000005];
long t[500005];
void f(long l, long r, long i)
{
    long s = (l + r)/2;
    if(l == r) t[i] = niz[l];
    else
    {
        f(l, s, 2*i + 1);
        f(s + 1, r, 2*i + 2);
        t[i] = t[2*i + 1] & t[2*i + 2];
    }
}
long f2(long l, long r, long i, long x, long y)
{
    long s = (l + r)/2;
    if(x <= l && y >= r) return t[i];
    if((x < l && y < l) || ((x > r) && (y > r)))return 1048575;
    return f2(l, s, i*2 + 1, x, y)&f2(s + 1, r, i*2 + 2, x, y);

}

int main()
{
    ios_base::sync_with_stdio(false);
    long n, i, q, x, y;
    cin >> n >> q;
    for(i = 1; i <= n; i++) cin >> niz[i];
    f(1, n, 0);
    for(i = 0; i < q; i++)
    {
        cin >> x >> y;
        cout << f2(1, n, 0, x, y) << endl;
    }
    return 0;
}