#include <bits/stdc++.h>
using namespace std;
#define faster ios_base::sync_with_stdio(false); cin.tie(NULL)
#define Bit(mask , i) ((mask >> i) & 1)
#define fi first
#define se second
#define _LOG2(nl) 31 - __builtin_clz(nl)
#define c_bit(nl) __builtin_popcount(nl)
#define li pair<long long , int>
#define db double
#define onBit(mask , i) (mask | (1 << i))
#define offBit(mask , i) (mask & (~(1 << i)))
const long long MOD = 1e9 + 7;
const long long INF = 1e14;
const int N = 1e5 + 7;
int n , q;
int t[29][4 * N] , nil[29];
long long lazy[4 * N] , a[N] , pre[N];
void push(int id , int l , int mid , int r){
if (lazy[id]){
lazy[id << 1] ^= lazy[id];
lazy[id << 1 | 1] ^= lazy[id];
for (int i = 0 ; i <= 27 ; ++i){
if (Bit(lazy[id] , i)) t[i][id << 1] = (mid - l + 1) - t[i][id << 1];
if (Bit(lazy[id] , i)) t[i][id << 1 | 1] = (r - mid) - t[i][id << 1 | 1];
}
lazy[id] = 0;
}
}
void build(int id , int l , int r){
if (l == r){
for (int i = 0 ; i <= 27 ; ++i){
t[i][id] = Bit(pre[l - 1] , i);
}
return;
}
int mid = (l + r) >> 1;
build(id << 1 , l , mid);
build(id << 1 | 1 , mid + 1 , r);
for (int i = 0 ; i <= 27 ; ++i){
t[i][id] = t[i][id << 1] + t[i][id << 1 | 1];
}
}
void get(int id , int l , int r , int u , int v){
if (l > v || r < u) return;
if (u <= l && r <= v){
for (int i = 0 ; i <= 27 ; ++i){
nil[i] += t[i][id];
}
return;
}
int mid = (l + r) >> 1;
push(id , l , mid , r);
get(id << 1 , l , mid , u , v);
get(id << 1 | 1 , mid + 1 , r , u , v);
}
void update(int id , int l , int r , int u , int v , long long val){
if (l > v || r < u) return;
if (u <= l && r <= v){
for (int i = 0 ; i <= 27 ; ++i) if (Bit(val , i)){
t[i][id] = (r - l + 1) - t[i][id];
}
lazy[id] ^= val;
return;
}
int mid = (l + r) >> 1;
push(id , l , mid , r);
update(id << 1 , l , mid , u , v , val);
update(id << 1 | 1 , mid + 1 , r , u , v , val);
for (int i = 0 ; i <= 27 ; ++i){
t[i][id] = t[i][id << 1] + t[i][id << 1 | 1];
}
}
void inp(){
cin >> n >> q;
for (int i = 1 ; i <= n ; ++i){
cin >> a[i];
pre[i] = pre[i - 1] ^ a[i];
}
build(1 , 1 , n + 1);
}
void solve(){
while (q--){
int c;
cin >> c;
if (c == 1){
int pos;
long long val;
cin >> pos >> val;
a[pos] ^= val;
swap(a[pos] , val);
update(1 , 1 , n + 1 , pos + 1 , n + 1 , val);
}
if (c == 2){
memset(nil , 0 , sizeof nil);
int l , r;
cin >> l >> r;
++r;
get(1 , 1 , n + 1 , l , r);
long long res = 0;
for (int i = 0 ; i <= 27 ; ++i){
res += 1LL * (1LL << i) * nil[i] * (r - l + 1 - nil[i]);
}
cout << res << '\n';
}
}
}
int main(){
// freopen("xhmax.inp" , "r" , stdin);
// freopen("xhmax.out" , "w" , stdout);
faster;
inp();
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZmFzdGVyIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpCiNkZWZpbmUgQml0KG1hc2sgLCBpKSAoKG1hc2sgPj4gaSkgJiAxKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgX0xPRzIobmwpIDMxIC0gX19idWlsdGluX2NseihubCkKI2RlZmluZSBjX2JpdChubCkgX19idWlsdGluX3BvcGNvdW50KG5sKQojZGVmaW5lIGxpIHBhaXI8bG9uZyBsb25nICwgaW50PgojZGVmaW5lIGRiIGRvdWJsZQojZGVmaW5lIG9uQml0KG1hc2sgLCBpKSAobWFzayB8ICgxIDw8IGkpKQojZGVmaW5lIG9mZkJpdChtYXNrICwgaSkgKG1hc2sgJiAofigxIDw8IGkpKSkKCmNvbnN0IGxvbmcgbG9uZyBNT0QgPSAxZTkgKyA3Owpjb25zdCBsb25nIGxvbmcgSU5GID0gMWUxNDsKY29uc3QgaW50IE4gPSAxZTUgKyA3OwppbnQgbiAsIHE7CmludCB0WzI5XVs0ICogTl0gLCBuaWxbMjldOwpsb25nIGxvbmcgbGF6eVs0ICogTl0gLCBhW05dICwgcHJlW05dOwoKdm9pZCBwdXNoKGludCBpZCAsIGludCBsICwgaW50IG1pZCAsIGludCByKXsKICAgIGlmIChsYXp5W2lkXSl7CiAgICAgICAgbGF6eVtpZCA8PCAxXSBePSBsYXp5W2lkXTsKICAgICAgICBsYXp5W2lkIDw8IDEgfCAxXSBePSBsYXp5W2lkXTsKICAgICAgICBmb3IgKGludCBpID0gMCA7IGkgPD0gMjcgOyArK2kpewogICAgICAgICAgICBpZiAoQml0KGxhenlbaWRdICwgaSkpIHRbaV1baWQgPDwgMV0gPSAobWlkIC0gbCArIDEpIC0gdFtpXVtpZCA8PCAxXTsKICAgICAgICAgICAgaWYgKEJpdChsYXp5W2lkXSAsIGkpKSB0W2ldW2lkIDw8IDEgfCAxXSA9IChyIC0gbWlkKSAtIHRbaV1baWQgPDwgMSB8IDFdOwogICAgICAgIH0KICAgICAgICBsYXp5W2lkXSA9IDA7CiAgICB9Cn0KCnZvaWQgYnVpbGQoaW50IGlkICwgaW50IGwgLCBpbnQgcil7CiAgICBpZiAobCA9PSByKXsKICAgICAgICBmb3IgKGludCBpID0gMCA7IGkgPD0gMjcgOyArK2kpewogICAgICAgICAgICB0W2ldW2lkXSA9IEJpdChwcmVbbCAtIDFdICwgaSk7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpbnQgbWlkID0gKGwgKyByKSA+PiAxOwogICAgYnVpbGQoaWQgPDwgMSAsIGwgLCBtaWQpOwogICAgYnVpbGQoaWQgPDwgMSB8IDEgLCBtaWQgKyAxICwgcik7CiAgICBmb3IgKGludCBpID0gMCA7IGkgPD0gMjcgOyArK2kpewogICAgICAgIHRbaV1baWRdID0gdFtpXVtpZCA8PCAxXSArIHRbaV1baWQgPDwgMSB8IDFdOwogICAgfQp9Cgp2b2lkIGdldChpbnQgaWQgLCBpbnQgbCAsIGludCByICwgaW50IHUgLCBpbnQgdil7CiAgICBpZiAobCA+IHYgfHwgciA8IHUpIHJldHVybjsKICAgIGlmICh1IDw9IGwgJiYgciA8PSB2KXsKICAgICAgICBmb3IgKGludCBpID0gMCA7IGkgPD0gMjcgOyArK2kpewogICAgICAgICAgICBuaWxbaV0gKz0gdFtpXVtpZF07CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpbnQgbWlkID0gKGwgKyByKSA+PiAxOwogICAgcHVzaChpZCAsIGwgLCBtaWQgLCByKTsKICAgIGdldChpZCA8PCAxICwgbCAsIG1pZCAsIHUgLCB2KTsKICAgIGdldChpZCA8PCAxIHwgMSAsIG1pZCArIDEgLCByICwgdSAsIHYpOwp9Cgp2b2lkIHVwZGF0ZShpbnQgaWQgLCBpbnQgbCAsIGludCByICwgaW50IHUgLCBpbnQgdiAsIGxvbmcgbG9uZyB2YWwpewogICAgaWYgKGwgPiB2IHx8IHIgPCB1KSByZXR1cm47CiAgICBpZiAodSA8PSBsICYmIHIgPD0gdil7CiAgICAgICAgZm9yIChpbnQgaSA9IDAgOyBpIDw9IDI3IDsgKytpKSBpZiAoQml0KHZhbCAsIGkpKXsKICAgICAgICAgICAgdFtpXVtpZF0gPSAociAtIGwgKyAxKSAtIHRbaV1baWRdOwogICAgICAgIH0KICAgICAgICBsYXp5W2lkXSBePSB2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGludCBtaWQgPSAobCArIHIpID4+IDE7CiAgICBwdXNoKGlkICwgbCAsIG1pZCAsIHIpOwogICAgdXBkYXRlKGlkIDw8IDEgLCBsICwgbWlkICwgdSAsIHYgLCB2YWwpOwogICAgdXBkYXRlKGlkIDw8IDEgfCAxICwgbWlkICsgMSAsIHIgLCB1ICwgdiAsIHZhbCk7CiAgICBmb3IgKGludCBpID0gMCA7IGkgPD0gMjcgOyArK2kpewogICAgICAgIHRbaV1baWRdID0gdFtpXVtpZCA8PCAxXSArIHRbaV1baWQgPDwgMSB8IDFdOwogICAgfQp9Cgp2b2lkIGlucCgpewogICAgY2luID4+IG4gPj4gcTsKICAgIGZvciAoaW50IGkgPSAxIDsgaSA8PSBuIDsgKytpKXsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgICAgICBwcmVbaV0gPSBwcmVbaSAtIDFdIF4gYVtpXTsKICAgIH0KICAgIGJ1aWxkKDEgLCAxICwgbiArIDEpOwp9Cgp2b2lkIHNvbHZlKCl7CiAgICB3aGlsZSAocS0tKXsKICAgICAgICBpbnQgYzsKICAgICAgICBjaW4gPj4gYzsKICAgICAgICBpZiAoYyA9PSAxKXsKICAgICAgICAgICAgaW50IHBvczsKICAgICAgICAgICAgbG9uZyBsb25nIHZhbDsKICAgICAgICAgICAgY2luID4+IHBvcyA+PiB2YWw7CiAgICAgICAgICAgIGFbcG9zXSBePSB2YWw7CiAgICAgICAgICAgIHN3YXAoYVtwb3NdICwgdmFsKTsKICAgICAgICAgICAgdXBkYXRlKDEgLCAxICwgbiArIDEgLCBwb3MgKyAxICwgbiArIDEgLCB2YWwpOwogICAgICAgIH0KICAgICAgICBpZiAoYyA9PSAyKXsKICAgICAgICAgICAgbWVtc2V0KG5pbCAsIDAgLCBzaXplb2YgbmlsKTsKICAgICAgICAgICAgaW50IGwgLCByOwogICAgICAgICAgICBjaW4gPj4gbCA+PiByOwogICAgICAgICAgICArK3I7CiAgICAgICAgICAgIGdldCgxICwgMSAsIG4gKyAxICwgbCAsIHIpOwogICAgICAgICAgICBsb25nIGxvbmcgcmVzID0gMDsKICAgICAgICAgICAgZm9yIChpbnQgaSA9IDAgOyBpIDw9IDI3IDsgKytpKXsKICAgICAgICAgICAgICAgIHJlcyArPSAxTEwgKiAoMUxMIDw8IGkpICogbmlsW2ldICogKHIgLSBsICsgMSAtIG5pbFtpXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY291dCA8PCByZXMgPDwgJ1xuJzsKICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCl7Ci8vCWZyZW9wZW4oInhobWF4LmlucCIgLCAiciIgLCBzdGRpbik7Ci8vCWZyZW9wZW4oInhobWF4Lm91dCIgLCAidyIgLCBzdGRvdXQpOwogICAgZmFzdGVyOwogICAgaW5wKCk7CiAgICBzb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0K