//#include"debugging.h"
#include<iostream>
#include<iomanip>
#include<cmath>
#include<algorithm>
#include<string>
#include<vector>
#include<set>
#include<map>
#include<stack>
#include<queue>
#include<tuple>
#include<cctype>
#include<numeric>
#include<climits>
#include<cassert>
#include<bitset>
#include<cstdlib>
#include<unordered_set>
#include<unordered_map>
#include<utility>
using namespace std;
#define cy cout<<"YES"
#define cn cout<<"NO"
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define FOR(x) for(int &i:x)cin>>i;
#define SZ(x) int(x.size())
const int MOD=1e9+7;
typedef long long ll;
void solve() {
int n,q;cin>>n>>q;
vector<int>v(n+1);
for(int i=1;i<n+1;i++){
cin>>v[i];
}
while(q--){
int t;cin>>t;
if(t==1){
int i,va;cin>>i>>va;
v[i]=va;
}
else{
int l,r;cin>>l>>r;
int res=0;
if((l+r-1)%2==0){
cout<<0<<"\n";
continue;
}
for(int i=l;i<=r;i+=2){
res^=v[i];
}
cout<<res<<"\n";
}
/*12345
1 12 123 1234 12345 //5 -- 4
2 12 123 1234 12345 23 234 2345 //8 -=2 6
3 123 1234 12345 23 234 2345 34 345 //9 -=3 6
4 1234 12345 234 2345 34 345 45 //8 -=4
5 12345 2345 345 45 //5
*/
/*
1234567
1 12 123 1234 12345 123456 1234567 7
2 12 123 1234 12345 123456 1234567 23 234 2345 23456 234567 12
3 123 1234 12345 123456 1234567 23 234 2345 23456 234567 34 345 3456 34567 15
4 1234 12345 123456 1234567 234 2345 23456 234567 34 345 3456 34567 45 456 4567 16
5 12345 123456 1234567 2345 23456 234567 345 3456 34567 45 456 4567 56 567 15
6 123456 1234567 23456 234567 3456 34567 456 4567 56 567 67 12
7 1234567 234567 34567 4567 567 67 7
*/
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t=1;
//cin>>t;
//cin.ignore();
while(t--) {
solve();
cout<<(t?"\n":"");
}
return 0;
}