#include <stdio.h>

int P( int i , int p , int n , int a[] )
{
    int result = 0 ;
    
    if( i + p - 1 <= n )
    {
        for( int j = i ; j <= i + p - 1 ; ++j )
        {
            result ^= a[j] ;
        }
            
    }   
    
    
    return result ;
    
}

int main( void )
{
    int n , m , p ;
    
    scanf( "%d %d %d" , &n , &m , &p );
    
    int array[n + 1] ;
    
    for( int i = 1 ; i <= n ; ++i )
        scanf( "%d" , &array[i] );
    
    int choice ;
    
    int i , x , l , r ;
    
    while( m-- )
    {
        scanf( "%d" , &choice );
        
        if( choice == 1 )
        {
            scanf( "%d %d" , &i , &x );
            
            array[i] ^= x ;
        }
        
        else 
        {
            scanf( "%d %d" , &l , &r );
            
            int result = 0;
            
            for( int i = l ; i <= r ; ++i )
                result += P( i , p , n , array ) ;
            
            printf( "%d\n" , result );
        }
    }
}