// ~~ icebear ~~
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
typedef pair<int, ii> iii;
template<class T>
bool minimize(T &a, const T &b) {
if (a > b) return a = b, true;
return false;
}
template<class T>
bool maximize(T &a, const T &b) {
if (a < b) return a = b, true;
return false;
}
#define FOR(i,a,b) for(int i=(a); i<=(b); ++i)
#define FORR(i,a,b) for(int i=(a); i>=(b); --i)
#define REP(i, n) for(int i=0; i<(n); ++i)
#define RED(i, n) for(int i=(n)-1; i>=0; --i)
#define MASK(i) (1LL << (i))
#define BIT(S, i) (((S) >> (i)) & 1)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define all(x) x.begin(), x.end()
#define task "gen"
const int MOD = 1e9 + 7;
const int inf = 1e9 + 27092008;
const ll INF = 1e18 + 27092008;
const int N = 2e4 + 5;
const int S = 100;
int n, q, a[N], pref[N];
int rmq[15][N / S + 5][N], dp[N / S + 5][S + 2][S + 2];
struct Node {
Node *child[2];
int cnt;
Node() {
child[0] = child[1] = NULL;
cnt = 0;
}
} *root;
void update(int x, int sign) {
Node* p = root;
RED(i, 30) {
int pos = BIT(x, i);
if (p -> child[pos] == NULL) p -> child[pos] = new Node();
p = p -> child[pos];
p -> cnt += sign;
}
}
int getXor(int x) {
Node* p = root;
int ans = 0;
RED(i, 30) {
int pos = BIT(x, i);
if (p -> child[pos ^ 1] != NULL && p -> child[pos ^ 1] -> cnt > 0) {
p = p -> child[pos ^ 1];
ans |= MASK(i);
} else if (p -> child[pos] != NULL && p -> child[pos] -> cnt > 0) {
p = p -> child[pos];
}
}
return ans;
}
void init(void) {
cin >> n >> q;
REP(i, n) {
cin >> a[i];
if (i > 0) pref[i] = pref[i - 1] ^ a[i];
else pref[i] = a[i];
}
}
void process(void) {
root = new Node();
for(int B = 0; B < n; B += S) {
int R = min(n, B + S) - 1;
int block = B / S;
FOR(i, B, R) update(pref[i], +1);
REP(i, R) {
rmq[0][block][i] = getXor((!i ? 0 : pref[i - 1]));
if (B <= i && i <= R) update(pref[i], -1);
}
update(pref[R], -1);
FOR(i, B - 1, R - 1) update((i == -1 ? 0 : pref[i]), +1);
FOR(i, R, n - 1) rmq[0][block][i] = getXor(pref[i]);
FOR(i, B - 1, R - 1) update((i == -1 ? 0 : pref[i]), -1);
FORR(l, R, B) {
dp[block][l - B][l - B] = a[l];
FOR(r, l + 1, R)
dp[block][l - B][r - B] = max({dp[block][l - B][r - B - 1],
dp[block][l + 1 - B][r - B], pref[r] ^ (!l ? 0 : pref[l - 1])});
}
}
FOR(j, 1, 14) FOR(B, 0, n / S) REP(i, n - MASK(j) + 1)
rmq[j][B][i] = max(rmq[j - 1][B][i], rmq[j - 1][B][i + MASK(j - 1)]);
auto get_max = [&](const int B, int l, int r) {
int k = __lg(r - l + 1);
return max(rmq[k][B][l], rmq[k][B][r - MASK(k) + 1]);
};
int l, r, last_ans = 0;
FOR(i, 1, q) {
cin >> l >> r;
l = (l + last_ans) % n;
r = (r + last_ans) % n;
if (l > r) swap(l, r);
int blockL = (l + S - 1) / S;
int blockR = r / S;
int ans = 0;
if (blockL >= blockR) {
if (l / S == r / S) {
cout << (last_ans = dp[l / S][l - (l / S) * S][r - (r / S) * S]) << '\n';
continue;
}
FOR(i, l, r) {
update((i == -1 ? 0 : pref[i - 1]), +1);
maximize(ans, getXor(pref[i]));
}
FOR(i, l - 1, r - 1) update((i == -1 ? 0 : pref[i]), -1);
cout << (last_ans = ans) << '\n';
continue;
}
maximize(ans, dp[l / S][l - (l / S) * S][S - 1]);
FOR(B, blockL, blockR - 1) maximize(ans, get_max(B, l, r));
maximize(ans, dp[r / S][0][r - (r / S) * S]);
FOR(i, l - 1, blockL * S) update((i == -1 ? 0 : pref[i]), +1);
FOR(i, blockR * S, r) maximize(ans, getXor(pref[i]));
cout << (last_ans = ans) << '\n';
FOR(i, l - 1, blockL * S) update((i == -1 ? 0 : pref[i]), -1);
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
if (fopen(task".inp", "r")) {
freopen(task".inp", "r", stdin);
// freopen(task".out", "w", stdout);
}
int tc = 1;
// cin >> tc;
while(tc--) {
init();
process();
}
return 0;
}
Ly8gfn4gaWNlYmVhciB+fgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOwp0eXBlZGVmIHBhaXI8aW50LCBpaT4gaWlpOwoKdGVtcGxhdGU8Y2xhc3MgVD4KICAgIGJvb2wgbWluaW1pemUoVCAmYSwgY29uc3QgVCAmYikgewogICAgICAgIGlmIChhID4gYikgcmV0dXJuIGEgPSBiLCB0cnVlOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCnRlbXBsYXRlPGNsYXNzIFQ+CiAgICBib29sIG1heGltaXplKFQgJmEsIGNvbnN0IFQgJmIpIHsKICAgICAgICBpZiAoYSA8IGIpIHJldHVybiBhID0gYiwgdHJ1ZTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgojZGVmaW5lIEZPUihpLGEsYikgZm9yKGludCBpPShhKTsgaTw9KGIpOyArK2kpCiNkZWZpbmUgRk9SUihpLGEsYikgZm9yKGludCBpPShhKTsgaT49KGIpOyAtLWkpCiNkZWZpbmUgUkVQKGksIG4pIGZvcihpbnQgaT0wOyBpPChuKTsgKytpKQojZGVmaW5lIFJFRChpLCBuKSBmb3IoaW50IGk9KG4pLTE7IGk+PTA7IC0taSkKI2RlZmluZSBNQVNLKGkpICgxTEwgPDwgKGkpKQojZGVmaW5lIEJJVChTLCBpKSAoKChTKSA+PiAoaSkpICYgMSkKI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGFsbCh4KSB4LmJlZ2luKCksIHguZW5kKCkKI2RlZmluZSB0YXNrICJnZW4iCgpjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsKY29uc3QgaW50IGluZiA9IDFlOSArIDI3MDkyMDA4Owpjb25zdCBsbCBJTkYgPSAxZTE4ICsgMjcwOTIwMDg7CmNvbnN0IGludCBOID0gMmU0ICsgNTsKY29uc3QgaW50IFMgPSAxMDA7CmludCBuLCBxLCBhW05dLCBwcmVmW05dOwppbnQgcm1xWzE1XVtOIC8gUyArIDVdW05dLCBkcFtOIC8gUyArIDVdW1MgKyAyXVtTICsgMl07CgpzdHJ1Y3QgTm9kZSB7CiAgICBOb2RlICpjaGlsZFsyXTsKICAgIGludCBjbnQ7CgogICAgTm9kZSgpIHsKICAgICAgICBjaGlsZFswXSA9IGNoaWxkWzFdID0gTlVMTDsKICAgICAgICBjbnQgPSAwOwogICAgfQp9ICpyb290OwoKdm9pZCB1cGRhdGUoaW50IHgsIGludCBzaWduKSB7CiAgICBOb2RlKiBwID0gcm9vdDsKICAgIFJFRChpLCAzMCkgewogICAgICAgIGludCBwb3MgPSBCSVQoeCwgaSk7CiAgICAgICAgaWYgKHAgLT4gY2hpbGRbcG9zXSA9PSBOVUxMKSBwIC0+IGNoaWxkW3Bvc10gPSBuZXcgTm9kZSgpOwogICAgICAgIHAgPSBwIC0+IGNoaWxkW3Bvc107CiAgICAgICAgcCAtPiBjbnQgKz0gc2lnbjsKICAgIH0KfQoKaW50IGdldFhvcihpbnQgeCkgewogICAgTm9kZSogcCA9IHJvb3Q7CiAgICBpbnQgYW5zID0gMDsKICAgIFJFRChpLCAzMCkgewogICAgICAgIGludCBwb3MgPSBCSVQoeCwgaSk7CiAgICAgICAgaWYgKHAgLT4gY2hpbGRbcG9zIF4gMV0gIT0gTlVMTCAmJiBwIC0+IGNoaWxkW3BvcyBeIDFdIC0+IGNudCA+IDApIHsKICAgICAgICAgICAgcCA9IHAgLT4gY2hpbGRbcG9zIF4gMV07CiAgICAgICAgICAgIGFucyB8PSBNQVNLKGkpOwogICAgICAgIH0gZWxzZSBpZiAocCAtPiBjaGlsZFtwb3NdICE9IE5VTEwgJiYgcCAtPiBjaGlsZFtwb3NdIC0+IGNudCA+IDApIHsKICAgICAgICAgICAgcCA9IHAgLT4gY2hpbGRbcG9zXTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gYW5zOwp9Cgp2b2lkIGluaXQodm9pZCkgewogICAgY2luID4+IG4gPj4gcTsKICAgIFJFUChpLCBuKSB7CiAgICAgICAgY2luID4+IGFbaV07CiAgICAgICAgaWYgKGkgPiAwKSBwcmVmW2ldID0gcHJlZltpIC0gMV0gXiBhW2ldOwogICAgICAgIGVsc2UgcHJlZltpXSA9IGFbaV07CiAgICB9Cn0KCnZvaWQgcHJvY2Vzcyh2b2lkKSB7CiAgICByb290ID0gbmV3IE5vZGUoKTsKICAgIGZvcihpbnQgQiA9IDA7IEIgPCBuOyBCICs9IFMpIHsKICAgICAgICBpbnQgUiA9IG1pbihuLCBCICsgUykgLSAxOwogICAgICAgIGludCBibG9jayA9IEIgLyBTOwogICAgICAgIEZPUihpLCBCLCBSKSB1cGRhdGUocHJlZltpXSwgKzEpOwogICAgICAgIFJFUChpLCBSKSB7CiAgICAgICAgICAgIHJtcVswXVtibG9ja11baV0gPSBnZXRYb3IoKCFpID8gMCA6IHByZWZbaSAtIDFdKSk7CiAgICAgICAgICAgIGlmIChCIDw9IGkgJiYgaSA8PSBSKSB1cGRhdGUocHJlZltpXSwgLTEpOwogICAgICAgIH0KICAgICAgICB1cGRhdGUocHJlZltSXSwgLTEpOwoKICAgICAgICBGT1IoaSwgQiAtIDEsIFIgLSAxKSB1cGRhdGUoKGkgPT0gLTEgPyAwIDogcHJlZltpXSksICsxKTsKICAgICAgICBGT1IoaSwgUiwgbiAtIDEpIHJtcVswXVtibG9ja11baV0gPSBnZXRYb3IocHJlZltpXSk7CiAgICAgICAgRk9SKGksIEIgLSAxLCBSIC0gMSkgdXBkYXRlKChpID09IC0xID8gMCA6IHByZWZbaV0pLCAtMSk7CgogICAgICAgIEZPUlIobCwgUiwgQikgewogICAgICAgICAgICBkcFtibG9ja11bbCAtIEJdW2wgLSBCXSA9IGFbbF07CiAgICAgICAgICAgIEZPUihyLCBsICsgMSwgUikKICAgICAgICAgICAgICAgIGRwW2Jsb2NrXVtsIC0gQl1bciAtIEJdID0gbWF4KHtkcFtibG9ja11bbCAtIEJdW3IgLSBCIC0gMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRwW2Jsb2NrXVtsICsgMSAtIEJdW3IgLSBCXSwgcHJlZltyXSBeICghbCA/IDAgOiBwcmVmW2wgLSAxXSl9KTsKICAgICAgICB9CiAgICB9CgogICAgRk9SKGosIDEsIDE0KSBGT1IoQiwgMCwgbiAvIFMpIFJFUChpLCBuIC0gTUFTSyhqKSArIDEpCiAgICAgICAgcm1xW2pdW0JdW2ldID0gbWF4KHJtcVtqIC0gMV1bQl1baV0sIHJtcVtqIC0gMV1bQl1baSArIE1BU0soaiAtIDEpXSk7CgoKICAgIGF1dG8gZ2V0X21heCA9IFsmXShjb25zdCBpbnQgQiwgaW50IGwsIGludCByKSB7CiAgICAgICAgaW50IGsgPSBfX2xnKHIgLSBsICsgMSk7CiAgICAgICAgcmV0dXJuIG1heChybXFba11bQl1bbF0sIHJtcVtrXVtCXVtyIC0gTUFTSyhrKSArIDFdKTsKICAgIH07CgogICAgaW50IGwsIHIsIGxhc3RfYW5zID0gMDsKCiAgICBGT1IoaSwgMSwgcSkgewogICAgICAgIGNpbiA+PiBsID4+IHI7CiAgICAgICAgbCA9IChsICsgbGFzdF9hbnMpICUgbjsKICAgICAgICByID0gKHIgKyBsYXN0X2FucykgJSBuOwogICAgICAgIGlmIChsID4gcikgc3dhcChsLCByKTsKCiAgICAgICAgaW50IGJsb2NrTCA9IChsICsgUyAtIDEpIC8gUzsKICAgICAgICBpbnQgYmxvY2tSID0gciAvIFM7CgogICAgICAgIGludCBhbnMgPSAwOwogICAgICAgIGlmIChibG9ja0wgPj0gYmxvY2tSKSB7CiAgICAgICAgICAgIGlmIChsIC8gUyA9PSByIC8gUykgewogICAgICAgICAgICAgICAgY291dCA8PCAobGFzdF9hbnMgPSBkcFtsIC8gU11bbCAtIChsIC8gUykgKiBTXVtyIC0gKHIgLyBTKSAqIFNdKSA8PCAnXG4nOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgRk9SKGksIGwsIHIpIHsKICAgICAgICAgICAgICAgIHVwZGF0ZSgoaSA9PSAtMSA/IDAgOiBwcmVmW2kgLSAxXSksICsxKTsKICAgICAgICAgICAgICAgIG1heGltaXplKGFucywgZ2V0WG9yKHByZWZbaV0pKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBGT1IoaSwgbCAtIDEsIHIgLSAxKSB1cGRhdGUoKGkgPT0gLTEgPyAwIDogcHJlZltpXSksIC0xKTsKICAgICAgICAgICAgY291dCA8PCAobGFzdF9hbnMgPSBhbnMpIDw8ICdcbic7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgbWF4aW1pemUoYW5zLCBkcFtsIC8gU11bbCAtIChsIC8gUykgKiBTXVtTIC0gMV0pOwogICAgICAgIEZPUihCLCBibG9ja0wsIGJsb2NrUiAtIDEpIG1heGltaXplKGFucywgZ2V0X21heChCLCBsLCByKSk7CiAgICAgICAgbWF4aW1pemUoYW5zLCBkcFtyIC8gU11bMF1bciAtIChyIC8gUykgKiBTXSk7CgogICAgICAgIEZPUihpLCBsIC0gMSwgYmxvY2tMICogUykgdXBkYXRlKChpID09IC0xID8gMCA6IHByZWZbaV0pLCArMSk7CiAgICAgICAgRk9SKGksIGJsb2NrUiAqIFMsIHIpIG1heGltaXplKGFucywgZ2V0WG9yKHByZWZbaV0pKTsKICAgICAgICBjb3V0IDw8IChsYXN0X2FucyA9IGFucykgPDwgJ1xuJzsKCiAgICAgICAgRk9SKGksIGwgLSAxLCBibG9ja0wgKiBTKSB1cGRhdGUoKGkgPT0gLTEgPyAwIDogcHJlZltpXSksIC0xKTsKICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICBpZiAoZm9wZW4odGFzayIuaW5wIiwgInIiKSkgewogICAgICAgIGZyZW9wZW4odGFzayIuaW5wIiwgInIiLCBzdGRpbik7Ci8vICAgICAgICBmcmVvcGVuKHRhc2siLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIGludCB0YyA9IDE7Ci8vICAgICBjaW4gPj4gdGM7CiAgICB3aGlsZSh0Yy0tKSB7CiAgICAgICAgaW5pdCgpOwogICAgICAgIHByb2Nlc3MoKTsKICAgIH0KICAgIHJldHVybiAwOwp9