#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=200010,T=510;
int n,q,a[N],l,r,x,ans,t,L[T],R[T],pos[N],sum[T][T];
vector<int>ve[T];
int query(int x,int y,int val){
int px=pos[x],py=pos[y],ans=0;
if(px==py){
for(int i=x;i<=y;i++){
if(a[i]<=val) ans+=a[i];
}
return ans;
}
else{
for(int i=px+1;i<=py-1;i++){
if(ve[i][0]>val) continue;
if(ve[i][ve[i].size()-1]<=val) ans+=sum[i][ve[i].size()-1];
else ans+=sum[i][upper_bound(ve[i].begin(),ve[i].end(),val)-ve[i].begin()-1];
}
for(int i=x;i<=R[px];i++){
if(a[i]<=val) ans+=a[i];
}
for(int i=L[py];i<=y;i++){
if(a[i]<=val) ans+=a[i];
}
return ans;
}
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n;
t=sqrt(n);
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=t;i++) L[i]=R[i-1]+1,R[i]=L[i]+t-1;
if(R[t]<n) L[++t]=R[t-1]+1,R[t]=n;
for(int i=1;i<=t;i++){
for(int j=L[i];j<=R[i];j++) ve[i].push_back(a[j]),pos[j]=i;
sort(ve[i].begin(),ve[i].end());
sum[i][0]=ve[i][0];
for(int j=1;j<ve[i].size();j++) sum[i][j]=sum[i][j-1]+ve[i][j];
}
cin>>q;
for(int i=1;i<=q;i++){
cin>>l>>r>>x;
l^=ans,r^=ans,x^=ans;
ans=query(l,r,x);
cout<<ans<<'\n';
}
return 0;
}