#include<bits/stdc++.h>
//#pragma GCC optimize "trapv"
//#include<ext/pb_ds/assoc_container.hpp>
//#include<ext/pb_ds/tree_policy.hpp>
#define fast_az_fuk ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define ll long long
#define lll __int128
#define ull unsigned ll
#define ld long double
#define pb push_back
#define pf push_front
#define dll deque<ll>
#define vll vector<ll>
#define vvll vector<vll>
#define pll pair<ll,ll>
#define vpll vector<pll>
#define dpll deque<pll>
#define mapll map<ll,ll>
#define umapll umap<ll,ll>
// #define endl "\n"
#define all(v) v.begin(),v.end()
#define ms(a,x) memset(a,x,sizeof(a))
#define random(l,r,T) uniform_int_distribution<T>(l,r)(rng)
//#define ordered_set tree<ll, null_type,less<ll>, rb_tree_tag,tree_order_statistics_node_update>
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
//using namespace __gnu_pbds;
template<typename T> istream& operator >>(istream &in,vector<T> &v){ for(auto &x:v) in>>x; return in;}
template<typename T> ostream& operator <<(ostream &out,const vector<T> &v){ for(auto &x:v) out<<x<<' '; return out;}
template<typename T1,typename T2> istream& operator >>(istream &in,pair<T1,T2> &p){ in>>p.first>>p.second; return in;}
template<typename T1,typename T2> ostream& operator <<(ostream &out,const pair<T1,T2> &p){ out<<p.first<<' '<<p.second; return out;}
ll sumn,sumq;
const bool tests = 1;
void solve_case(){
ll n; cin>>n; vll a(n); cin>>a; assert(n >= 1 && n <= 1e5);
sumn+=n;
for(ll x : a){
assert(x>=0 && x<=1e9);
}
int bt = 0; while((1<<bt) < n) ++bt;
vvll dp((1<<bt),vll(bt+1));
for(int i=0;i<(1<<bt);i++){
dp[i][0] = (i<n?a[i]:0);
}
for(int j=1;j<=bt;j++){
for(int i=0;i<(1<<bt);i++){
dp[i][j] += dp[i][j-1];
if(i & (1<<(j-1))){
dp[i][j] += dp[i^(1<<(j-1))][j];
}
}
}
auto solve = [&](ll l,ll x){
if(x <= l){
return dp[x][bt];
}
ll ans = 0;
for(int i=bt-1;i>=0;i--){
if((x&(1<<i))){
if((l&(1<<i)) == 0) {
x ^= (1<<i);
}
else{
ans += dp[x^(1<<i)][i];
}
}
if(x <= l) {
ans += dp[x][i]; break;
}
}
return ans;
};
ll q; cin>>q; ll ans = 0; assert(q>0 && q<=1e5);
sumq += q;
while(q--){
ll l,r,x; cin>>l>>r>>x;
assert(r >= l);
assert(l>=0&&l<n && r>=0 && r<n && x>=0 && x<=1e9);
x = (x + ans) % (1<<bt);
ans = solve(r,x) - (l>0?solve(l-1,x):0);
cout<<ans<<endl;
}
}
int32_t main()
{
#ifdef LOCAL
freopen("error.txt", "w", stderr);
clock_t clk = clock();
#endif
fast_az_fuk
sumn = sumq = 0;
ll testcase=1; if(tests) cin>>testcase;
cout<<fixed<<setprecision(10);
for(ll test=1;test<=testcase;test++)
{//cout<<"Case #"<<test<<": ";
solve_case();
}
assert(sumn >= 1 && sumn <= 1e5);
assert(sumq >= 1 && sumq <= 1e5);
#ifdef LOCAL
cerr << '\n'<<"Time (in s): " << double(clock() - clk) * 1.0 / CLOCKS_PER_SEC << '\n';
#endif
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KLy8jcHJhZ21hIEdDQyBvcHRpbWl6ZSAidHJhcHYiCi8vI2luY2x1ZGU8ZXh0L3BiX2RzL2Fzc29jX2NvbnRhaW5lci5ocHA+Ci8vI2luY2x1ZGU8ZXh0L3BiX2RzL3RyZWVfcG9saWN5LmhwcD4KI2RlZmluZSBmYXN0X2F6X2Z1ayAgICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpOyBjb3V0LnRpZShOVUxMKTsKI2RlZmluZSBsbCAgICAgICAgICAgICAgIGxvbmcgbG9uZwojZGVmaW5lIGxsbCAgICAgICAgICAgICAgX19pbnQxMjgKI2RlZmluZSB1bGwgICAgICAgICAgICAgIHVuc2lnbmVkIGxsCiNkZWZpbmUgbGQgICAgICAgICAgICAgICBsb25nIGRvdWJsZSAKI2RlZmluZSBwYiAgICAgICAgICAgICAgIHB1c2hfYmFjayAKI2RlZmluZSBwZiAgICAgICAgICAgICAgIHB1c2hfZnJvbnQKI2RlZmluZSBkbGwgICAgICAgICAgICAgIGRlcXVlPGxsPiAKI2RlZmluZSB2bGwgICAgICAgICAgICAgIHZlY3RvcjxsbD4KI2RlZmluZSB2dmxsICAgICAgICAgICAgIHZlY3Rvcjx2bGw+IAojZGVmaW5lIHBsbCAgICAgICAgICAgICAgcGFpcjxsbCxsbD4gCiNkZWZpbmUgdnBsbCAgICAgICAgICAgICB2ZWN0b3I8cGxsPgojZGVmaW5lIGRwbGwgICAgICAgICAgICAgZGVxdWU8cGxsPgojZGVmaW5lIG1hcGxsICAgICAgICAgICAgbWFwPGxsLGxsPgojZGVmaW5lIHVtYXBsbCAgICAgICAgICAgdW1hcDxsbCxsbD4KLy8gI2RlZmluZSBlbmRsICAgICAgICAgICAgICJcbiIgCiNkZWZpbmUgYWxsKHYpICAgICAgICAgICB2LmJlZ2luKCksdi5lbmQoKSAKI2RlZmluZSBtcyhhLHgpICAgICAgICAgIG1lbXNldChhLHgsc2l6ZW9mKGEpKQojZGVmaW5lIHJhbmRvbShsLHIsVCkgICAgdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPFQ+KGwscikocm5nKQoKCi8vI2RlZmluZSBvcmRlcmVkX3NldCB0cmVlPGxsLCBudWxsX3R5cGUsbGVzczxsbD4sIHJiX3RyZWVfdGFnLHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKbXQxOTkzNyBybmcoY2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpKTsKLy91c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlzdHJlYW0mIG9wZXJhdG9yID4+KGlzdHJlYW0gJmluLHZlY3RvcjxUPiAmdil7IGZvcihhdXRvICZ4OnYpIGluPj54OyByZXR1cm4gaW47fQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBvc3RyZWFtJiBvcGVyYXRvciA8PChvc3RyZWFtICZvdXQsY29uc3QgdmVjdG9yPFQ+ICZ2KXsgZm9yKGF1dG8gJng6dikgb3V0PDx4PDwnICc7IHJldHVybiBvdXQ7fQp0ZW1wbGF0ZTx0eXBlbmFtZSBUMSx0eXBlbmFtZSBUMj4gaXN0cmVhbSYgb3BlcmF0b3IgPj4oaXN0cmVhbSAmaW4scGFpcjxUMSxUMj4gJnApeyBpbj4+cC5maXJzdD4+cC5zZWNvbmQ7IHJldHVybiBpbjt9CnRlbXBsYXRlPHR5cGVuYW1lIFQxLHR5cGVuYW1lIFQyPiBvc3RyZWFtJiBvcGVyYXRvciA8PChvc3RyZWFtICZvdXQsY29uc3QgcGFpcjxUMSxUMj4gJnApeyBvdXQ8PHAuZmlyc3Q8PCcgJzw8cC5zZWNvbmQ7IHJldHVybiBvdXQ7fQpsbCBzdW1uLHN1bXE7CmNvbnN0IGJvb2wgdGVzdHMgPSAxOwp2b2lkIHNvbHZlX2Nhc2UoKXsKICAgIGxsIG47IGNpbj4+bjsgdmxsIGEobik7IGNpbj4+YTsgYXNzZXJ0KG4gPj0gMSAmJiBuIDw9IDFlNSk7CiAgICBzdW1uKz1uOwogICAgZm9yKGxsIHggOiBhKXsKICAgICAgICBhc3NlcnQoeD49MCAmJiB4PD0xZTkpOwogICAgfQogICAgaW50IGJ0ID0gMDsgd2hpbGUoKDE8PGJ0KSA8IG4pICsrYnQ7CiAgICB2dmxsIGRwKCgxPDxidCksdmxsKGJ0KzEpKTsKICAgIGZvcihpbnQgaT0wO2k8KDE8PGJ0KTtpKyspewogICAgICAgIGRwW2ldWzBdID0gKGk8bj9hW2ldOjApOwogICAgfQogICAgZm9yKGludCBqPTE7ajw9YnQ7aisrKXsKICAgICAgICBmb3IoaW50IGk9MDtpPCgxPDxidCk7aSsrKXsKICAgICAgICAgICAgZHBbaV1bal0gKz0gZHBbaV1bai0xXTsKICAgICAgICAgICAgaWYoaSAmICgxPDwoai0xKSkpewogICAgICAgICAgICAgICAgZHBbaV1bal0gKz0gZHBbaV4oMTw8KGotMSkpXVtqXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGF1dG8gc29sdmUgPSBbJl0obGwgbCxsbCB4KXsKICAgICAgICBpZih4IDw9IGwpewogICAgICAgICAgICByZXR1cm4gZHBbeF1bYnRdOwogICAgICAgIH0KICAgICAgICBsbCBhbnMgPSAwOwogICAgICAgIGZvcihpbnQgaT1idC0xO2k+PTA7aS0tKXsKICAgICAgICAgICAgaWYoKHgmKDE8PGkpKSl7CiAgICAgICAgICAgICAgICBpZigobCYoMTw8aSkpID09IDApIHsKICAgICAgICAgICAgICAgICAgICB4IF49ICgxPDxpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgYW5zICs9IGRwW3heKDE8PGkpXVtpXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZih4IDw9IGwpIHsKICAgICAgICAgICAgICAgIGFucyArPSBkcFt4XVtpXTsgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGFuczsKICAgIH07CiAgICBsbCBxOyBjaW4+PnE7IGxsIGFucyA9IDA7IGFzc2VydChxPjAgJiYgcTw9MWU1KTsKICAgIHN1bXEgKz0gcTsKICAgIHdoaWxlKHEtLSl7CiAgICAgICAgbGwgbCxyLHg7IGNpbj4+bD4+cj4+eDsKICAgICAgICBhc3NlcnQociA+PSBsKTsKICAgICAgICBhc3NlcnQobD49MCYmbDxuICYmIHI+PTAgJiYgcjxuICYmIHg+PTAgJiYgeDw9MWU5KTsKICAgICAgICB4ID0gKHggKyBhbnMpICUgKDE8PGJ0KTsKICAgICAgICBhbnMgPSBzb2x2ZShyLHgpIC0gKGw+MD9zb2x2ZShsLTEseCk6MCk7CiAgICAgICAgY291dDw8YW5zPDxlbmRsOwogICAgfQp9CgppbnQzMl90IG1haW4oKQp7CiAgICAjaWZkZWYgTE9DQUwKICAgICAgICBmcmVvcGVuKCJlcnJvci50eHQiLCAidyIsIHN0ZGVycik7CiAgICAgICAgY2xvY2tfdCBjbGsgPSBjbG9jaygpOwogICAgI2VuZGlmCiAgICBmYXN0X2F6X2Z1awogICAgc3VtbiA9IHN1bXEgPSAwOwogICAgbGwgdGVzdGNhc2U9MTsgaWYodGVzdHMpIGNpbj4+dGVzdGNhc2U7CiAgICBjb3V0PDxmaXhlZDw8c2V0cHJlY2lzaW9uKDEwKTsKICAgIGZvcihsbCB0ZXN0PTE7dGVzdDw9dGVzdGNhc2U7dGVzdCsrKQogICAgey8vY291dDw8IkNhc2UgIyI8PHRlc3Q8PCI6ICI7CiAgICAgICAgc29sdmVfY2FzZSgpOwogICAgfQogICAgYXNzZXJ0KHN1bW4gPj0gMSAmJiBzdW1uIDw9IDFlNSk7CiAgICBhc3NlcnQoc3VtcSA+PSAxICYmIHN1bXEgPD0gMWU1KTsKICAgICNpZmRlZiBMT0NBTAogICAgICAgIGNlcnIgPDwgJ1xuJzw8IlRpbWUgKGluIHMpOiAiIDw8IGRvdWJsZShjbG9jaygpIC0gY2xrKSAqIDEuMCAvIENMT0NLU19QRVJfU0VDIDw8ICdcbic7CiAgICAjZW5kaWYKICAgIHJldHVybiAwOwp9