#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, q;
int a[2][200010];
int lowbit(int x)
{
return x & -x;
}
void change(int a[], int pos, int x)
{
if (pos > n) return ;
a[pos] ^= x;
change(a, pos + lowbit(pos), x);
}
int TriQUery(int a[], int pos)
{
if (pos == 0) return 0;
return a[pos] ^ TriQUery(a, pos - lowbit(pos));
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> n >> q;
for (int i = 1; i <= n; i++)
{
int t;
cin >> t;
change(a[i & 1], i, t);
}
for (int i = 1; i <= q; i++)
{
int op, l, r;
cin >> op >> l >> r;
if (op == 1) change(a[l & 1], l, a[l & 1][l] ^ r);
if (op == 2)
{
if ((r - l + 1) % 2)
cout << (TriQUery(a[l & 1], r) ^ TriQUery(a[l & 1], l - 1)) << endl;
else cout << "0" << endl;
}
}
return 0;
}