#include <iostream>
#include <vector>
#include <set>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <string>
#define int long long
const int maxn = 2e5+7;
using namespace std;
const int N=2e5+5;
int t[2][2*N]{0};
int a[N]{0};
int qr(int i,int l,int r,int sz,int res=0){
for(l += sz, r += sz; l < r; l >>= 1, r >>= 1){
if(l&1) res ^= t[i][l++];
if(r&1) res ^= t[i][--r];
}return res;
}
void upd(int i, int id, int amt, int sz){
//id += sz; t[i][id] = amt;
for(id >>= 1; id; id >>= 1) t[i][id] = t[i][2*id]^t[i][2*id+1];
}
int main(){
int n, q; cin >> n >> q;
for(int i = 0; i < n; i++) cin >> a[i];
for(int i = 0; i < n; i += 2) t[0][i+n] = a[i];
for(int i = 1; i < n; i += 2) t[1][i+n] = a[i];
for(int i = n-1; i > 0; i--) t[0][i] = t[0][2*i]^t[0][2*i+1], t[1][i]=t[1][2*i]^t[1][2*i+1];
while(q--){
int gh; cin >> gh;
if(gh == 1){
int i, j; cin >> i >> j;
if((i - 1)&1) upd(1, i-1, j, n);
else upd(0, i-1, j, n);
}
else {
int l, r; cin >> l >> r;
if((r-l+1)%2 == 0) cout << 0 <<'\n';
else cout << qr ((l-1)%2, l-1, r, n) <<'\n';
}
}
}
Compilation message
cc1plus: error: '::main' must return 'int'