#include <bits/stdc++.h>
using namespace std;
const int N=200050;
const int L=18;
int rmq[N][L];
int main()
{
	int n,q,l,r,i,j;
	scanf("%i %i",&n,&q);
	for(i=1;i<=n;i++) scanf("%i",&rmq[i][0]);
	for(j=1;j<L;j++)
	{
		for(i=1;i<=n-(1<<j)+1;i++)
		{
			rmq[i][j]=rmq[i][j-1]&rmq[i+(1<<j-1)][j-1];
		}
	}
	while(q--)
	{
		scanf("%i %i",&l,&r);
		int k=__builtin_clz(1)-__builtin_clz(r-l+1);
		printf("%i\n",rmq[l][k]&rmq[r-(1<<k)+1][k]);
		//printf("%i %i %i\n",k,rmq[l][k],rmq[r-(1<<k)+1][k]);
	}
	return 0;
}