#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3fffffff;
const int SINF = 0x7fffffff;
const long long LINF = 0x3fffffffffffffff;
const long long SLINF = 0x7fffffffffffffff;
const int MAXN = 100007;
const int BASE = 26;
int n, q;
char s[MAXN];
int cl[MAXN][BASE], cr[MAXN][BASE], prv[BASE];
int dp[2][MAXN][BASE];
int ps[MAXN][BASE], rps[MAXN][BASE];
bool used[BASE + 1];
int ord[BASE];
int ql, qr;
void init();
void input();
void inputq();
void work();
int main() {
  init();
  input();
  work();
}
void init() { ios::sync_with_stdio(false); }
void input() {
  scanf("%s", s + 1);
  scanf("%d", &q);
}
void inputq() { scanf("%d%d", &ql, &qr); }
void work() {
  n = strlen(s + 1);
  memset(prv, 0, sizeof(prv));
  for (int i = 1; i <= n; ++i) {
    prv[s[i] - 'a'] = i;
    for (int j = 0; j < BASE; ++j) cl[i][j] = prv[j];
  }
  for (int i = 0; i < BASE; ++i) prv[i] = n + 1;
  for (int i = n; i > 0; --i) {
    prv[s[i] - 'a'] = i;
    for (int j = 0; j < BASE; ++j) cr[i][j] = prv[j];
  }
  int cp, cc, pl, pr;
  for (int i = 1; i <= n; ++i) {
    for (int j = 0; j < BASE; ++j) ps[i][j] = ps[i - 1][j];
    ps[i][s[i] - 'a'] ^= dp[0][i - 1][s[i] - 'a'];
    for (int j = 0; j < BASE; ++j) ord[j] = j;
    sort(ord, ord + BASE, [&](int x, int y) { return cl[i][x] > cl[i][y]; });
    for (int _j = 0; _j < BASE; ++_j) {
      int j = ord[_j];
      memset(used, false, sizeof(used));
      for (int _k = 0; _k < _j; ++_k) {
        int k = ord[_k];
        if (cl[i][k] > cl[i][j]) {
          cp = cl[i][j];
          pl = cr[cp + 1][k];
          pr = cl[i][k];
          cc = dp[0][i][k] ^ ps[pr][k] ^ ps[pl][k] ^ dp[0][pl - 1][j];
          used[cc] = true;
        }
      }
      for (int k = 0; k <= BASE; ++k) {
        if (!used[k]) {
          dp[0][i][j] = k;
          break;
        }
      }
    }
  }
  for (int i = n; i > 0; --i) {
    for (int j = 0; j < BASE; ++j) rps[i][j] = rps[i + 1][j];
    rps[i][s[i] - 'a'] ^= dp[1][i + 1][s[i] - 'a'];
    for (int j = 0; j < BASE; ++j) ord[j] = j;
    sort(ord, ord + BASE, [&](int x, int y) { return cr[i][x] < cr[i][y]; });
    for (int _j = 0; _j < BASE; ++_j) {
      int j = ord[_j];
      dp[1][i][j] = 0;
      memset(used, false, sizeof(used));
      for (int _k = 0; _k < _j; ++_k) {
        int k = ord[_k];
        if (cr[i][k] < cr[i][j]) {
          cp = cr[i][j];
          pr = cl[cp - 1][k];
          pl = cr[i][k];
          cc = dp[1][i][k] ^ rps[pl][k] ^ rps[pr][k] ^ dp[1][pr + 1][j];
          used[cc] = true;
        }
      }
      for (int k = 0; k <= BASE; ++k) {
        if (!used[k]) {
          dp[1][i][j] = k;
          break;
        }
      }
    }
  }
  bool flag;
  for (int _q = 0; _q < q; ++_q) {
    inputq();
    flag = false;
    for (int i = 0; i < BASE; ++i) {
      pl = cr[ql][i], pr = cl[qr][i];
      if (pr >= ql) {
        cc = ps[pr][i] ^ ps[pl][i] ^ dp[0][qr][i] ^ dp[1][ql][i];
        if (!cc) {
          flag = true;
          break;
        }
      }
    }
    printf(flag ? "Alice\n" : "Bob\n");
  }
}
