#include <bits/stdc++.h>

using namespace std;

int check(int a, int b, int* N, int l)
{
    if(l == 0)
        return 1;
    for(int i = a; i < b; i++)
        if(N[i] == 0)
            return 0;
    return 1;
}

int check(int a, int b)
{
    int r = 0;
    int i = 0;
    while(a > 0 && b > 0)
    {
        if(a%2 && b%2)
            r += pow(2, i);
        i++;
        a /= 2;
        b /= 2;
    }
    return r;
}

int bit(int a, int b, int* N)
{
    if(a == 0)
        return 0;
    if(a == b)
        return N[a-1];
    if(a == b-1)
        return check(N[a-1], N[b-1]);
    return check(bit(a, b-1, N), N[b-1]);
}

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

    int n, Q;
    cin >> n >> Q;
    int a, b;
    bool g = false;
    int l = n;

    int N[n];
    int R[Q];
    for(int i = 0; i < n; i++)
    {   
        cin >> N[i];
        l -= N[i];
        if(N[i] > 1)
            g = true;
    }
    
    if(g)
    {   
        for(int i = 0; i < Q; i++)
        {
            cin >> a >> b;
            R[i] = bit(a, b, N);
        }
        for(int i = 0; i < Q; i++)
            cout << R[i] << endl;
    }
    else
    {
        for(int i = 0; i < Q; i++)
    {
        cin >> a >> b;
        R[i] = check(a-1, b, N, l);
    }

    for(int i = 0; i < Q; i++)
        cout << R[i] << endl;
    }

    return 0;
}