//#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;
for(int i=l;i<=r;i++){
if((r-i+1)&1)res^=v[i];
}
cout<<res<<"\n";
}
}
}
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;
}