//毒瘤xor
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int arr[100005][34];
int b[34];
int main()
{
int i,n,j,t;
ll x;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>x;
for(j=0;j<31;j++)
{
arr[i][j]=(x>>j)&1;//输入,存末尾数字
}
}
for(i=1;i<=n;i++)
for(j=0;j<31;j++)
arr[i][j]+=arr[i-1][j];//前缀和一波
cin>>t;
while(t--)
{
ll x,y;
ll result=0;//结果
memset(b,0,sizeof(b));
cin>>x>>y;
cin.clear();
if(x==y)//如果区间只有一个数,特判
for(i=0;i<31;i++) b[i]=!(arr[x][i]-arr[x-1][i]);
else
for(i=0;i<31;i++)
{
if((arr[y][i]-arr[x-1][i])>(y-x)/2) b[i]=0;//如果0多,异或1
else b[i]=1;//反之
}
for(i=31;i>=0;i--) result+=b[i]*pow(2,i);//二转十
cout<<result<<endl;
}
}