#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline T read() {
  T f = 0, x = 0;
  char c = getchar();
  while (!isdigit(c)) f = c == '-', c = getchar();
  while (isdigit(c)) x = x * 10 + c - 48, c = getchar();
  return f ? -x : x;
}
namespace run {
const int N = 1e5 + 9, lim = 27;
char s[N];
int n, m, pre[N][lim], suf[N][lim], preans[N][lim], sufans[N][lim], top;
pair<int, int> st[lim + 1];
vector<int> pos[lim];
int sum[N], vis[258];
int main() {
  scanf("%s", s + 1), n = strlen(s + 1) + 1, s[0] = s[n] = 'z' + 1,
                      m = read<int>();
  for (int i = n; i >= 0; i--) {
    pos[s[i] - 'a'].push_back(i);
    for (int j = 0; j < lim; j++)
      if (pos[j].size()) suf[i][j] = pos[j][pos[j].size() - 1];
  }
  for (int i = 0; i < lim; i++) pos[i].clear();
  for (int i = 0; i <= n; i++) {
    pos[s[i] - 'a'].push_back(i);
    for (int j = 0; j < lim; j++)
      if (pos[j].size()) pre[i][j] = pos[j][pos[j].size() - 1];
  }
  for (int i = n; i >= 1; i--) {
    top = 0;
    for (int j = 0; j < lim; j++)
      if (suf[i][j]) st[++top] = pair<int, int>(suf[i][j], j);
    sort(st + 1, st + top + 1);
    if (suf[i + 1][s[i] - 'a'] && suf[i + 1][s[i] - 'a'] < n) {
      sum[i] = preans[i + 1][s[i] - 'a'];
      sum[i] ^= sum[suf[i + 1][s[i] - 'a']];
    }
    for (int j = 1; j <= top; j++) {
      int col = st[j].second, pos = st[j].first;
      for (int k = 0; k < lim; k++) vis[k] = 0;
      for (int k = 1; k < j; k++) {
        int tmp = st[k].second,
            res = preans[i][tmp] ^ sum[suf[i][tmp]] ^ sum[pre[pos][tmp]];
        if (pre[pos][tmp]) res ^= preans[pre[pos][tmp] + 1][col];
        vis[res]++;
      }
      while (vis[preans[i][col]]) preans[i][col]++;
    }
    for (int j = 0; j < lim; j++)
      if (!suf[i][j]) preans[i][j] = preans[i][lim - 1];
  }
  for (int i = 0; i <= n; i++) {
    top = 0;
    for (int j = 0; j < lim; j++)
      if (pre[i][j] || j == lim - 1) st[++top] = pair<int, int>(pre[i][j], j);
    sort(st + 1, st + top + 1), reverse(st + 1, st + top + 1);
    for (int j = 1; j <= top; j++) {
      int col = st[j].second, pos = st[j].first;
      for (int k = 0; k < lim; k++) vis[k] = 0;
      for (int k = 1; k < j; k++) {
        int tmp = st[k].second,
            res = sufans[i][tmp] ^ sum[pre[i][tmp]] ^ sum[suf[pos][tmp]];
        if (suf[pos][tmp] - 1 < n) res ^= sufans[suf[pos][tmp] - 1][col];
        vis[res]++;
      }
      while (vis[sufans[i][col]]) sufans[i][col]++;
    }
    for (int j = 0; j < lim; j++)
      if (!pre[i][j]) sufans[i][j] = sufans[i][lim - 1];
  }
  for (int t = 1; t <= m; t++) {
    int l = read<int>(), r = read<int>();
    for (int k = 0; k < lim + 1; k++) vis[k] = 0;
    for (int i = 0; i < lim; i++) {
      if (suf[l][i] && suf[l][i] <= r) {
        int res = preans[l][i] ^ sum[suf[l][i]] ^ sum[pre[r][i]];
        if (pre[r][i]) res ^= sufans[r][i];
        vis[res]++;
      }
    }
    int ret = 0;
    while (vis[ret]) ret++;
    if (ret)
      puts("Alice");
    else
      puts("Bob");
  }
  return 0;
}
}  // namespace run
int main() { return run::main(); }
