#include <bits/stdc++.h>
using namespace std;
inline const int Get_Int() {
  int num = 0, bj = 1;
  char x = getchar();
  while (x < '0' || x > '9') {
    if (x == '-') bj = -1;
    x = getchar();
  }
  while (x >= '0' && x <= '9') {
    num = num * 10 + x - '0';
    x = getchar();
  }
  return num * bj;
}
const int BASE = 9, maxs = 505;
int Hash(const vector<int> &a) {
  int ans = 0;
  for (int i = 4; i >= 0; i--) ans = ans * BASE + a[i];
  return ans;
}
vector<int> now;
vector<pair<int, int> > fedges[maxs][maxs];
vector<vector<int> > S;
int Pow[5], step = 0, M[60005], ans[maxs][maxs], InDegree[maxs][maxs];
void Dfs(int n, int k) {
  if (k == 1) {
    now.push_back(n);
    M[Hash(now)] = step++;
    S.push_back(now);
    now.pop_back();
    return;
  }
  for (int j = 0; j <= n; j++) {
    now.push_back(j);
    Dfs(n - j, k - 1);
    now.pop_back();
  }
}
queue<pair<int, int> > Q;
void Top_Sort() {
  while (!Q.empty()) {
    int s1 = Q.front().first, s2 = Q.front().second;
    Q.pop();
    for (auto Next : fedges[s1][s2]) {
      if (ans[Next.first][Next.second]) continue;
      if (ans[s1][s2] == 2) {
        ans[Next.first][Next.second] = 1;
        Q.push(Next);
        continue;
      }
      InDegree[Next.first][Next.second]--;
      if (InDegree[Next.first][Next.second] == 0) {
        ans[Next.first][Next.second] = 2;
        Q.push(Next);
        continue;
      }
    }
  }
}
int main() {
  Pow[0] = 1;
  for (int i = 1; i < 5; i++) Pow[i] = Pow[i - 1] * BASE;
  Dfs(8, 5);
  for (int id1 = 0; id1 < S.size(); id1++) {
    auto s1 = S[id1];
    int sum = Hash(s1);
    bool flag1 = 1;
    for (int id2 = 0; id2 < S.size(); id2++) {
      auto s2 = S[id2];
      bool flag2 = 1;
      for (int i = 1; i < 5; i++)
        if (s1[i]) {
          flag1 = 0;
          for (int j = 1; j < 5; j++)
            if (s2[j]) {
              flag2 = 0;
              int tmp = sum - Pow[i] + Pow[(i + j) % 5];
              fedges[id2][M[tmp]].push_back(make_pair(id1, id2));
              InDegree[id1][id2]++;
            }
        }
      if (flag1) {
        ans[id1][id2] = 1;
        Q.push(make_pair(id1, id2));
      } else if (flag2) {
        ans[id1][id2] = 2;
        Q.push(make_pair(id1, id2));
      }
    }
  }
  Top_Sort();
  int t = Get_Int();
  while (t--) {
    int f = Get_Int(), sum1 = 0, sum2 = 0;
    for (int i = 1; i <= 8; i++) sum1 += Pow[Get_Int()];
    for (int i = 1; i <= 8; i++) sum2 += Pow[Get_Int()];
    int s1 = M[sum1], s2 = M[sum2];
    if (f == 0) {
      if (ans[s1][s2] == 1)
        puts("Alice");
      else if (ans[s1][s2] == 2)
        puts("Bob");
      else
        puts("Deal");
    } else {
      if (ans[s2][s1] == 1)
        puts("Bob");
      else if (ans[s2][s1] == 2)
        puts("Alice");
      else
        puts("Deal");
    }
  }
  return 0;
}
