#include <bits/stdc++.h>
using namespace std;
char str[100010];
int f[100010][26 + 2], pre[100010][26], suf[100010][26], g[100010], n;
int ans[26 + 2];
int dfs(int l, int r, int c, int fl) {
  if (l > r) return 0;
  if (ans[c] != -1) return ans[c];
  int u = 0;
  for (int i = 0; i < 26; i++) {
    int L = suf[l][i], R = pre[r][i];
    if (R < l) continue;
    int s = g[L] ^ g[R];
    if (!fl)
      s ^= f[L - 1][c] ^ dfs(R + 1, r, i, 0);
    else
      s ^= dfs(l, L - 1, i, 1) ^ f[r][i];
    u |= 1 << s;
  }
  return ans[c] = __builtin_ctz(~u);
}
int main() {
  scanf("%s", str + 1);
  n = strlen(str + 1);
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < 26; j++) pre[i][j] = pre[i - 1][j];
    pre[i][str[i] - 'a'] = i;
  }
  for (int i = 0; i < 26; i++) suf[n + 1][i] = 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][str[i] - 'a'] = i;
  }
  for (int i = 1; i <= n; i++) {
    int c = str[i] - 'a';
    g[i] = f[i - 1][c] ^ g[pre[i - 1][c]];
    memset(ans, -1, sizeof(ans));
    for (int j = 0; j < 26; j++) f[i][j] = dfs(pre[i][j] + 1, i, j, 0);
  }
  int m;
  scanf("%d", &m);
  while (m-- > 0) {
    int l, r;
    scanf("%d%d", &l, &r);
    memset(ans, -1, sizeof(ans));
    if (dfs(l, r, 26, 1))
      puts("Alice");
    else
      puts("Bob");
  }
}
