/*
 *
 ********************************************************************************************
 * AUTHOR : Vijju123                                                                        *
 * Language: C++14                                                                          *
 * Purpose: -                                                                               *
 * IDE used: Codechef IDE.                                                                  *
 ********************************************************************************************
 *
 Comments will be included in practice problems if it helps ^^
 */



#include <iostream>
#include<bits/stdc++.h>
using namespace std;

long long int P(int i, long long arr[],int n,int p)
{
    int ans=0;
    int k=i;
    if(k+p-1>=n)return 0;
    for(;i<=k+p-1;i++)ans^=arr[i];
    return ans;
}

int main() {
	// your code goes here
	#ifdef JUDGE
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
    #endif
	ios_base::sync_with_stdio(0);
	cin.tie(NULL);
	cout.tie(NULL);
    int n,m,p;
    cin>>n>>m>>p;
    int t,i,l,r;
    long long arr[n],ans=0;
    for(i=0;i<n;i++)cin>>arr[i];
    while(m--)
    {
        cin>>t;
        if(t==1)
        {
            cin>>l>>r;
            --l;
            //--r;
            arr[l]=arr[l]^r;
        }
        else
        {
            //for(i=0;i<n;i++)cout<<arr[i]<<" ";cout<<endl;
            cin>>l>>r;
            --l;
            --r;
            int z;
            ans=0;
            for(i=l;i<=r;i++)
            {
                z=P(i,arr,n,p);
                ans+=z;
                if(i+p-1>=n)break;
                //cout<<z<<endl;
            }
            cout<<ans<<"\n";
        }
    }
	
	return 0;
}