#include<bits/stdc++.h>
using namespace std;
#define Study ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define ll long long
#define ull unsigned long long
#define pb push_back
#define ff first
#define ss second
#define ins insert
#define all(x) x.begin(),x.end()
#define fori(x,y,z) for(ll x=y;x<=z;x++)
const ll INF=1e9;
const ll sz=2e5+10;
const ll mod=1e9;
vector<ll>a(sz),cut(4*sz,0),tek(4*sz,0);
void build(ll v,ll l,ll r){
if(l==r){
if(l%2==0)
cut[v]=a[l];
else{
tek[v]=a[l];
//cout<<"HAI"<<v<<endl;
}
return;
}
ll mid=(l+r)>>1;
build(v<<1,l,mid);
build(v<<1|1,mid+1,r);
tek[v]=tek[v<<1]^tek[v<<1|1];
cut[v]=cut[v<<1]^cut[v<<1|1];
}
void update(ll v,ll l,ll r,ll pos,ll val){
if(l==r){
if(l%2)
tek[v]=val;
else
cut[v]=val;
return;
}
ll mid=(l+r)>>1;
if(pos<=mid)
update(v<<1,l,mid,pos,val);
else
update(v<<1|1,mid+1,r,pos,val);
cut[v]=cut[v<<1]^cut[v<<1|1];
tek[v]=tek[v<<1]^tek[v<<1|1];
}
ll query(ll v,ll l,ll r,ll tl,ll tr,ll st){
if(l>tr || r<tl)
return 0;
if(l>=tl && r<=tr)
return (st) ? tek[v] : cut[v];
ll mid=(l+r)>>1;
return query(v<<1,l,mid,tl,tr,st)^query(v<<1|1,mid+1,r,tl,tr,st);
}
void work(){
ll n,q;
cin>>n>>q;
fori(i,1,n){
cin>>a[i];
}
build(1,1,n);
while(q--){
ll t;
cin>>t;
if(t==1){
ll pos,val;
cin>>pos>>val;
update(1,1,n,pos,val);
}
else{
ll l,r;
cin>>l>>r;
if((r-l+1)%2==0){
cout<<0<<endl;
continue;
}
if(l%2)
cout<<query(1,1,n,l,r,1)<<endl;
else
cout<<query(1,1,n,l,r,0)<<endl;
}
}
}
int main(){
Study;
ll t=1;
//cin>>t;
while(t--){
work();
}
}
/*
62->legendary grandmaster 0.01%
313->International grandmaster 0.05%
737->Grandmaster 0.12%
1021->International master 0.17%
2859->Master 0.47%
5374->Candidate Master 0.89%
14429->Expert 2.40% ~~ !Goal till summer!! ~~
26668->Specialist 4.44% //skip here >:D
46695->Pupil 7.78% ~~ you are here !! ~~
600,000 user var cfde
*/
# | 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... |