def find(a,l,r,p):
    if l+p>len(a):
        return 0
    ans=0
    x=0
    for i in range(p):
        x^=a[l+i]
    #print(a)
    #print(x)
    ans=x
    j=l
    for i in range(l+p,r+p):
        if i>=len(a):
            break
        x^=a[j]
        x^=a[i]
        #print(x)
        ans+=x
        j+=1
    return ans

n,m,p=map(int,input().split())
a=list(map(int,input().split()))
a.insert(0,0)
for x in range(m):
    t,i,j=map(int,input().split())
    if t==1:
        a[i]=a[i]^j
    else:
        print(find(a,i,j,p))