#include <bits/stdc++.h>
using namespace std;
const int N = 100100;
inline int read() {
  char ch;
  while ((ch = getchar()) < '0' || ch > '9')
    ;
  int res = ch - '0';
  while ((ch = getchar()) >= '0' && ch <= '9') res = res * 10 + ch - '0';
  return res;
}
int n, Q, mem[27], pre[N][27], suf[N][27];
int f[N][27], g[N];
char s[N];
int mex(int x) { return __builtin_ctz(~x); }
int solve(int l, int r, int c, int op) {
  if (l > r) return 0;
  if (mem[c] != -1) return mem[c];
  int res = 0;
  for (int i = 0; i < 26; i++) {
    int tl = suf[l][i], tr = pre[r][i];
    if (tr >= l)
      res |=
          1 << (g[tr] ^ g[tl] ^ (op ? solve(l, tl - 1, i, 1) : f[tl - 1][c]) ^
                (op ? f[r][i] : solve(tr + 1, r, i, 0)));
  }
  return mem[c] = mex(res);
}
int main() {
  scanf("%s", s + 1);
  n = strlen(s + 1);
  for (int i = 1; i <= n; i++) s[i] -= 'a';
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < 26; j++) pre[i][j] = pre[i - 1][j];
    pre[i][s[i]] = i;
  }
  for (int j = 0; j < 26; j++) suf[n + 1][j] = n + 1;
  for (int i = n; i >= 1; i--) {
    for (int j = 0; j < 26; j++) suf[i][j] = suf[i + 1][j];
    suf[i][s[i]] = i;
  }
  for (int i = 1; i <= n; i++) {
    memset(mem, -1, sizeof(mem));
    g[i] = f[i - 1][s[i]] ^ g[pre[i - 1][s[i]]];
    for (int j = 0; j < 26; j++) f[i][j] = solve(pre[i][j] + 1, i, j, 0);
  }
  Q = read();
  while (Q--) {
    int l = read(), r = read();
    memset(mem, -1, sizeof(mem));
    if (solve(l, r, 26, 1))
      printf("Alice\n");
    else
      printf("Bob\n");
  }
  return 0;
}
