#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define MOD 1000000007
ll a[105], t[105], pre[105], l[105], r[105], x[105];
void solve(){
ll n, q, res = 0;
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i];
}
cin >> q;
for(int i = 0; i < q; i++){
cin >> l[i] >> r[i] >> x[i];
}
for (int msk = 0; msk < (1 << q); msk++){
ll sm = 0;
for(int i = 1; i <= n; i++){
t[i] = a[i];
}
for(int i = 0; i < q; i ++){
if(msk & (1 << i)){
for(int j = l[i]; j <= r[i]; j++){
t[j] ^= x[i];
}
}
}
for(int i = 1; i <= n; i++){
pre[i] = (pre[i - 1] + t[i]) % MOD;
res = (res + (((n + 1) * pre[i]) % MOD * pre[i])%MOD);
sm += pre[i];
}
sm %= MOD;
sm = ((sm * sm * -1) % MOD + MOD) % MOD;
res = (res + sm) % MOD;
}
cout << res << '\n';
}
int main() {
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int tests = 1;
// cin >> tests;
for(int i = 1; i <= tests; i ++){
solve();
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |