#include using namespace std; const int kMaxN = 2e5, kMask = 1 << 7; int v[kMaxN]; int table[kMask][kMaxN]; int aux[kMask]; int main() { cin.tie(0); ios_base::sync_with_stdio(false); int n, q; cin >> n >> q; for (int i = 0; i < n; ++i) { cin >> v[i]; } for (int i = 0; i < n; ++i) { for (int j = 0; j < kMask; ++j) { aux[j] = (i+j < n) ? v[i+j] : 0; } for (int bit = 1; bit < kMask; bit <<= 1) { for (int mask = 0; mask < kMask; ++mask) { if (mask & bit) { aux[mask] ^= aux[mask^bit]; } } } for (int mask = 0; mask < kMask; ++mask) { table[mask][i] = aux[mask]; } } while (q--> 0) { int t, pos; cin >> t >> pos; t %= 1 << (__lg(n-1) + 1); --pos; const int upper_mask = t / kMask, lower_mask = t % kMask; int result = table[lower_mask][pos]; for (int i = upper_mask; i > 0; i = (i-1) & upper_mask) { if (pos + i * kMask < n) { result ^= table[lower_mask][pos + i * kMask]; } } cout << result << '\n'; } }