#include <iostream>
#include <vector>
#include <cassert>

using namespace std;

int main () {

  ios::sync_with_stdio (false);
  cin.tie (0); cout.tie (0);

  int n, m, p;
  cin >> n >> m >> p;

  vector < int > v (n + 1);
  for (int i = 1; i <= n; ++ i) {
    cin >> v[i];
  }

  while (m --) {

    int type;
    cin >> type;

    if (type == 1 ) {

      int i, x;
      cin >> i >> x;
      v[i] ^= x;
    }
    else {

      int l, r;
      cin >> l >> r;


      long long ans = 0;
      for (int i = l; i <= r; ++ i) {
        if (i + p - 1 > n) {
          break;
        }


        int aux = 0;
        for (int j = i; j <= i + p - 1; ++ j) {
          aux ^= v[j];
        }

        ans += aux;
      }

      cout << ans << '\n';
    }
  }
}