#include <bits/stdc++.h>
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define ll          long long
#define pb          push_back
#define pii         pair<int,int>
#define vi          vector<int>
#define vii         vector<pii>
#define mi          map<int,int>
#define mii         map<pii,int>
#define all(a)      (a).begin(),(a).end()
#define x           first
#define y           second
#define sz(x)       (int)x.size()
#define endl        '\n'
#define hell        1000000007
#define rep(i,a,b)  for(int i=a;i<b;i++)
using namespace std;
int n,m,p,a[100005],pre[100005],b[100005];
void solve(){
    cin>>n>>m>>p;
    rep(i,1,n+1){
        cin>>a[i];
        pre[i]=a[i]^pre[i-1];
    }
    rep(i,1,n-p+2){
        b[i]=pre[i+p-1]^pre[i-1];
    }
    while(m--){
        int w;
        cin>>w;
        if(w==1){
            int in,x;
            cin>>in>>x;
            int l=max(1,in-p+1),r=min(in,n-p+1);
            rep(i,l,r+1){
                b[i]^=x;
            }
        }
        else{
            int l,r;
            ll ans=0;
            cin>>l>>r;
            rep(i,l,r+1){
                ans+=b[i];
            }
            cout<<ans<<endl;
        }
    }
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t=1;
    // cin>>t;
    while(t--){
        solve();
    }
    return 0;
}