#include <iostream> #include <vector> #include <string> #include <map> #include <unordered_map> #include <set> #include <unordered_set> #define ll long long using namespace std; int P(vector<int>& a, int idx, int p) { if (idx + p > a.size()) { return 0; } int s = a[idx]; for (int i = idx + 1; i < idx + p; i++) { s = s ^ a[i]; } return s; } int sum(vector<int>& a, int l, int r, int p) { int s = 0; for (int i = l; i <= r; ++i) { s += P(a, i, p); } return s; } int main() { int n, m, p; cin >> n >> m >> p; vector<int> a(n); for (int i = 0; i < n; ++i) { cin >> a[i]; } for (int j = 0; j < m; ++j) { int q; cin >> q; if (q == 1) { int i, x; cin >> i >> x; a[i-1] = a[i-1] ^ x; } else { int l, r; cin >> l >> r; l--; r--; cout << sum(a, l, r, p) << endl; } } return 0; }