#include<bits/stdc++.h>
#define int long long
#define lowbit(x) (x)&(-x)
using namespace std;
const int N=1e5+4;
int n,m;
int a1[N],tr1[N],tr2[N];
void add(int tr[],int x,int d){
for(int i=x;i<=n;i+=lowbit(i))
tr[i]^=d;
}
int sum(int tr[],int x){
int ans=0;
for(int i=x;i;i-=lowbit(i))
ans^=tr[i];
return ans;
}
signed main(){
cin >>n>>m;
for(int i=1;i<=n;i++){
cin >>a1[i];
if(i%2==0)
add(tr2,i,a1[i]);
else
add(tr1,i,a1[i]);
}
while(m--){
int x,a,b; cin >>x>>a>>b;
if(x==1){
if(a%2==0)
add(tr2,a,a1[a]^b);
else
add(tr1,a,a1[a]^b);
}else{
int x1=a%2,x2=b%2;
if(x1!=x2) cout <<"0";
else{
if(x1==0)
cout <<sum(tr2,b)-sum(tr2,a-1);
else cout <<sum(tr1,b)-sum(tr1,a-1);
}
cout <<endl;
}
}
return 0;
}