#include <bits/stdc++.h>
const int maxn = 1E5 + 77;
const int cL = 26;
int m_abs(int v) { return v > 0 ? v : -v; }
int LP[cL][maxn], RP[cL][maxn];
unsigned char LV[2][cL][maxn], LVC[2][cL][maxn][cL], SV[cL][maxn];
bool sgv[cL + 3];
int calc(int l, int r) {
  int ret = 0;
  memset(sgv, 0, sizeof(sgv));
  for (int c = 0; c < cL; ++c) {
    int pl = RP[c][l], pr = LP[c][r];
    if (pl > pr) continue;
    int x = SV[c][pr] ^ SV[c][pl];
    if (pl != l) x ^= LV[0][c][l];
    if (pr != r) x ^= LV[1][c][r];
    sgv[x] = true;
  }
  while (sgv[ret]) ++ret;
  return ret;
}
struct PQuery {
  int l, r, c;
  PQuery(int l, int r, int c) : l(l), r(r), c(c) {}
};
std::vector<PQuery> PQ[maxn];
char S[maxn];
int L;
void __pre() {
  for (int i = 0; i < cL; ++i) {
    for (int j = 1; j <= L; ++j) {
      if (S[j] == 'a' + i)
        LP[i][j] = j;
      else {
        LP[i][j] = LP[i][j - 1];
        PQ[j - LP[i][j]].push_back(PQuery(LP[i][j] + 1, j, i + 1));
      }
    }
  }
  for (int i = 0; i < cL; ++i) {
    RP[i][L + 1] = L + 1;
    for (int j = L; j; --j) {
      if (S[j] == 'a' + i)
        RP[i][j] = j;
      else {
        RP[i][j] = RP[i][j + 1];
        PQ[RP[i][j] - j].push_back(PQuery(j, RP[i][j] - 1, -i - 1));
      }
    }
  }
  for (int i = 1; i <= L; ++i) {
    for (auto pq : PQ[i]) {
      int l = pq.l, r = pq.r, c = m_abs(pq.c) - 1, tl = pq.c > 0, v = 0;
      memset(sgv, 0, sizeof(sgv));
      for (int j = 0; j < cL; ++j) {
        int m;
        if (tl)
          m = LP[j][r];
        else
          m = RP[j][l];
        if (m < l || m > r) continue;
        int x;
        if (tl) {
          x = LV[tl][j][r];
          if (LP[j][m - 1] >= l) {
            x ^= LVC[tl][c][m - 1][j];
          } else {
            x ^= LV[0][j][l];
          }
        } else {
          x = LV[tl][j][l];
          if (RP[j][m + 1] <= r) {
            x ^= LVC[tl][c][m + 1][j];
          } else {
            x ^= LV[1][j][r];
          }
        }
        LVC[tl][c][tl ? r : l][j] = x;
        sgv[x] = true;
      }
      while (sgv[v]) ++v;
      LV[tl][c][tl ? r : l] = v;
    }
    PQ[i].clear();
  }
  for (int i = 0; i < cL; ++i) {
    for (int j = 1; j <= L; ++j)
      if (S[j] == 'a' + i) {
        SV[i][j] = LV[1][i][j - 1] ^ SV[i][LP[i][j - 1]];
      }
  }
}
int M;
int main() {
  scanf("%s", S + 1);
  L = strlen(S + 1);
  __pre();
  scanf("%d", &M);
  while (M--) {
    int l, r;
    scanf("%d%d", &l, &r);
    printf("%s\n", calc(l, r) ? "Alice" : "Bob");
  }
}
