#include <bits/stdc++.h>

using namespace std;

long long mid, a, b, mid2;

long long binarna(long long pozicijenula[], long long a, long long b, long long gr1, long long gr2)
{
    mid = (a+b)/2;
    if(mid == mid2) return 1;
    long long pom1 = a, pom2 = b;
    if(pozicijenula[mid] < gr1-1)
    {
        mid2 = mid;
        return binarna(pozicijenula, mid, pom2, gr1, gr2);
    }
    else if(pozicijenula[mid] > gr2-1)
    {
        mid2 = mid;
        return binarna(pozicijenula, pom1, mid, gr1, gr2);
    }
    else return 0;
}


int main()
{
    ios_base::sync_with_stdio(0);
    long long n, q, i, gr1, gr2, j = 0;
    cin >> n >> q;
    bool samodva = true;
    long long niz[n], resenja[q], pozicijenula[n] = {-1};
    for(i = 0; i < n; i++)
    {
        cin >> niz[i];
        if(niz[i] != 1 || niz[i] != 0) samodva = false;
        else if(niz[i] == 0)
        {
            pozicijenula[j] = i;
            j++;
        }
    }
    long long pom = j;
    if(!samodva)
    {
    for(i = 0; i < q; i++)
    {
        cin >> gr1 >> gr2;
        bool ok = true;
        if(gr1 == gr2)
        {
            resenja[i] = niz[gr1-1];
            ok = false;
        }
        if(ok)
        {
            resenja[i] = niz[gr1] & niz[gr1 - 1];
            for(j = gr1 + 1; j < gr2; j++)
            {
                resenja[i] = resenja[i] & niz[j];
                if(resenja[i] == 0) j = gr2;
            }
        }
    }
    }
    else
    {
        for(i = 0; i < q; i++)
        {
            cin >> gr1 >> gr2;
            if(gr1 - 1 > pozicijenula[pom-1])
            {
                resenja[i] = 1;
                break;
            }
            if(gr2 - 1 < pozicijenula[0])
            {
                resenja[i] = 1;
                break;
            }
            if(gr1 - 1 <= pozicijenula[0] && gr2 - 1 >= pozicijenula[0])
            {
                    resenja[i] = 0;
                    break;
            }
            if(gr2 - 1 <= pozicijenula[pom-1] && gr1 - 1 >= pozicijenula[pom-1])
            {
                resenja[i] = 0;
                break;
            }
            if(niz[gr1 - 1] == 0 || niz[gr2 - 1] == 0)
            {
                resenja[i] = 0;
                break;
            }
            binarna(pozicijenula, 0, pom, gr1, gr2);
        }
    }
    for(i = 0; i < q; i++)
    {
        if(i != q-1) cout << resenja[i] << endl;
        else cout << resenja[i];
    }
    return 0;
}