#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+5;
int n,q,h[N];
int T,b[N],s[10005][10005];
int ans;
vector<int>v[N];
int K(int x){
return (x-1)/T+1;
}
int L(int x){
return (x-1)*T+1;
}
int R(int x){
return min(x*T,n);
}
void update(int x){
int cnt=0;
for(int i=L(x);i<=R(x);i++){
v[x].push_back(h[i]);
}
sort(v[x].begin(),v[x].end());
for(auto it:v[x]){
s[x][++cnt]=s[x][cnt-1]+it;
}
}
int ANS(int l,int r,int c){
int kl=K(l),kr=K(r),ans=0;
if(kl==kr){
for(int i=l;i<=r;i++){
if(h[i]<=c) ans+=h[i];
}
return ans;
}
else{
for(int i=kl+1;i<kr;i++){
int z=upper_bound(v[i].begin(),v[i].end(),c)-v[i].begin();
ans+=s[i][z];
}
for(int i=l;i<=R(kl);i++){
if(h[i]<=c) ans+=h[i];
}
for(int i=L(kr);i<=r;i++){
if(h[i]<=c) ans+=h[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>>h[i];
}
for(int i=1;i<=K(n);i++){
update(i);
}
cin>>q;
while(q--){
int l,r,x;
cin>>l>>r>>x;
l^=ans,r^=ans,x^=ans;
ans=ANS(l,r,x);
cout<<ans<<"\n";
}
return 0;
}