#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; }