#include <bits/stdc++.h>
using namespace std;
const int NN = 200500, L = 500;
int n, m, a[NN];
vector<int> v, val[L];
int st[L], ed[L];
int sum[L][L << 1], mn[L][L << 1];
int calc(int l, int r, int first) {
  int ans = 1e9;
  int now = lower_bound(v.begin(), v.end(), first) - v.begin();
  for (int i = 0; i * L < n - m + 1 && i * L < r; i++) {
    int k =
        lower_bound(val[i].begin(), val[i].end(), first) - val[i].begin() - 1;
    if (k < 0) {
      if (max(l, st[i]) < min(r, ed[i])) ans = min(ans, now);
      continue;
    }
    if (l <= st[i] && ed[i] <= r)
      ans = min(ans, now + mn[i][k]);
    else if (max(l, st[i]) < min(r, ed[i])) {
      int cur = now;
      for (int j = st[i]; j < ed[i]; j++) {
        if (j && a[j - 1] < first) cur--;
        if (j + m <= n && a[j + m - 1] < first) cur++;
        if (l <= j && j < r) ans = min(ans, cur);
      }
    }
    now += sum[i][k];
  }
  return ans;
}
int main() {
  cin.tie(0), cout.tie(0);
  cin >> n >> m;
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 0; i < m - 1; i++) v.push_back(a[i]);
  sort(v.begin(), v.end());
  for (int i = 0; i * L < n - m + 1; i++) {
    st[i] = i * L;
    ed[i] = min(st[i] + L, n - m + 1);
    for (int j = st[i]; j < ed[i]; j++) {
      if (j) val[i].push_back(a[j - 1]);
      if (j + m <= n) val[i].push_back(a[j + m - 1]);
    }
    sort(val[i].begin(), val[i].end());
    val[i].resize(unique(val[i].begin(), val[i].end()) - val[i].begin());
    for (int k = 0; k < val[i].size(); k++) {
      mn[i][k] = 1e9;
      for (int j = st[i]; j < ed[i]; j++) {
        if (j && a[j - 1] <= val[i][k]) sum[i][k]--;
        if (j + m <= n && a[j + m - 1] <= val[i][k]) sum[i][k]++;
        mn[i][k] = min(mn[i][k], sum[i][k]);
      }
    }
  }
  int q, l, r, first, ans = 0;
  for (cin >> q; q--;) {
    cin >> l >> r >> first;
    first ^= ans;
    cout << (ans = calc(l - 1, r, first)) << endl;
  }
  return 0;
}
