code
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int L = 2000;
int n, id[200005], st[1005], ed[1005], a[200005], b[200005];
ll lst, S[200005];
ll query(ll l, ll r, ll x){
int s = id[l], e = id[r];
ll sum = 0;
if(s == e){
for(int i = l; i <= r; i++){
if(a[i] > x) continue;
sum += a[i];
}
return sum;
}
for(int i = l; i <= ed[s]; i++){
if(a[i] > x) continue;
sum += a[i];
}
for(int i = st[e]; i <= r; i++){
if(a[i] > x) continue;
sum += a[i];
}
for(int i = s + 1; i <= e - 1; i++){
if(b[st[i]] > x) continue;
int p = upper_bound(b + st[id[i]], b + ed[id[i]] + 1, x) - b - 1;
sum += S[p];
}
return sum;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i];
id[i] = (i - 1) / L + 1;
if(id[i] != id[i - 1]){
st[id[i]] = i;
ed[id[i - 1]] = i - 1;
}
b[i] = a[i];
}
for(int i = 1; i <= (n - 1) / L + 1; i++){
sort(b + st[i], b + ed[i] + 1);
S[st[i]] = b[st[i]];
for(int j = st[i] + 1; j <= ed[i] - st[i]; j++) S[j] = S[j - 1] + b[j];
}
int q;
cin >> q;
while(q--){
ll l, r, x;
cin >> l >> r >> x;
l ^= lst;
r ^= lst;
x ^= lst;
lst = query(l, r, x);
cout << lst << '\n' ;
}
return 0;
}