#include <fstream>
using namespace std;
int p,k,n,x,y;
ofstream g("z.out");
int det(int l1,int c1,int l2, int c2, int min1,int max1){
if(l1==l2)
return min1;
else{
int l=(l1+l2)/2,c=(c1+c2)/2;
int cnt=(max1-min1+1)/4;
if(x<=l&&y<=c) return det(l1,c1,l,c,min1,min1+cnt-1);
if(x<=l&&y>c) return det(l1,c+1,l,c2,min1+cnt,min1+2*cnt-1);
if(x>l&&y<=c) return det(l+1,c1,l2,c,min1+2*cnt,min1+3*cnt-1);
if(x>l&&y>c) return det(l+1,c+1,l2,c2,min1+3*cnt,max1);
}
}
int main()
{
freopen("z.in","r",stdin);
scanf("%d%d",&p,&k);
n=1;
int i;
for(i=1;i<=p;i++)
n*=2;
for(i=1;i<=k;i++)
{
scanf("%d%d",&x,&y);
g<<det(1,1,n,n,1,n*n)<<'\n';
}
return 0;
}