import java.util.Arrays; import java.util.Scanner; public class XorryQueries { public static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { int n = scanner.nextInt(); int m = scanner.nextInt(); int p = scanner.nextInt(); int[] a = new int[n]; for(int i=0; i<n; i++) { a[i] = scanner.nextInt(); } // System.out.println("p3=" + P(3, p, a)); while(m-- > 0) { int type = scanner.nextInt(); if(type == 1) { int i = scanner.nextInt() - 1; int x = scanner.nextInt(); a[i] = a[i] ^ x; } else { int l = scanner.nextInt(); int r = scanner.nextInt(); int result = P(l, p, a); for(int i=l+1; i<=r; i++) { int pn = P(i, p, a); // System.out.println("p" + i + "=" + pn); result = result + pn; } System.out.println(result); } // System.out.println(Arrays.toString(a)); } } public static int P(int i, int p, int[] a) { if(i+p-1>a.length) return 0; int returnVal = a[i - 1]; for(int idx=i + 1; idx<=i+p-1; idx++) { returnVal = returnVal ^ a[idx - 1]; } return returnVal; } }