#include <cstdio>
#define reg register
constexpr int maxn = 200000;
constexpr int mlg = 15;
int dp[mlg + 2][maxn + 2], sz[mlg + 2][maxn + 2];
inline int read() {
reg int rtn = 0;
reg char c;
for (c = getchar(); c < '0' || c > '9'; c = getchar());
for (; c >= '0' && c <= '9'; c = getchar())
rtn = (rtn << 3) + (rtn << 1) + c - 48;
return rtn;
}
void initSt(int m) {
for (reg int k = 1, tmp; k <= mlg; ++k) {
tmp = m - (1 << k) + 1;
for (reg int i = 1; i <= tmp; ++i) {
dp[k][i] = dp[k - 1][i] ^ dp[k - 1][i + (1 << k - 1)];
if (sz[k - 1][i + (1 << k - 1)] & 1)
dp[k][i] |= (1 << k - 1);
sz[k][i] = sz[k - 1][i] + sz[k - 1][i + (1 << k - 1)];
}
}
}
int main() {
reg int n, m, q, cur, ans;
n = read(); m = read();
for (; n--; ) {
q = read();
++sz[0][q];
}
initSt(m); q = read();
for (; q--; ) {
n = read(); m = read();
cur = n; ans = 0;
for (reg int k = mlg; ~k; --k) {
if (cur + (1 << k) - 1 <= m) {
ans ^= dp[k][cur];
if (sz[k][cur] & 1)
ans ^= (cur - n);
cur += 1 << k;
} else if (cur > m) {
break;
}
}
putchar(ans ? 'A' : 'B');
}
#ifndef ONLINE_JUDGE
while (1);
#endif
return 0;
}