#include <bits/stdc++.h>
using namespace std;
int T, d[250001], f[250001];
vector<int> e[250001];
map<int, int> m;
queue<int> Q;
void build() {
  int a[5], b[5], cnt = 0;
  m[0] = 0;
  for (a[1] = 0; a[1] <= 8; a[1]++)
    for (a[2] = 0; a[1] + a[2] <= 8; a[2]++)
      for (a[3] = 0; a[1] + a[2] + a[3] <= 8; a[3]++)
        for (a[4] = 0; a[1] + a[2] + a[3] + a[4] <= 8; a[4]++)
          if (a[1] + a[2] + a[3] + a[4]) {
            int k1 = a[1] * 729 + a[2] * 81 + a[3] * 9 + a[4];
            if (m.find(k1) == m.end()) m[k1] = ++cnt;
            f[m[k1] * 500] = -1;
            for (b[1] = 0; b[1] <= 8; b[1]++)
              for (b[2] = 0; b[1] + b[2] <= 8; b[2]++)
                for (b[3] = 0; b[1] + b[2] + b[3] <= 8; b[3]++)
                  for (b[4] = 0; b[1] + b[2] + b[3] + b[4] <= 8; b[4]++)
                    if (b[1] + b[2] + b[3] + b[4]) {
                      int k2 = b[1] * 729 + b[2] * 81 + b[3] * 9 + b[4];
                      if (m.find(k2) == m.end()) m[k2] = ++cnt;
                      for (int i = 1; i <= 4; i++)
                        if (a[i])
                          for (int j = 1; j <= 4; j++)
                            if (b[j]) {
                              int c[5] = {a[0], a[1], a[2], a[3], a[4]};
                              c[i]--, c[(i + j) % 5]++;
                              int k3 = c[1] * 729 + c[2] * 81 + c[3] * 9 + c[4];
                              if (m.find(k3) == m.end()) m[k3] = ++cnt;
                              e[m[k2] * 500 + m[k3]].push_back(m[k1] * 500 +
                                                               m[k2]);
                              d[m[k1] * 500 + m[k2]]++;
                            }
                    }
          }
}
void bfs() {
  for (int i = 1; i < 250001; i++)
    if (!d[i] && e[i].size()) Q.push(i), f[i] = -1;
  while (!Q.empty()) {
    int cur = Q.front();
    Q.pop();
    if (!f[cur]) f[cur] = -1;
    for (int i = 0; i < e[cur].size(); i++) {
      int nxt = e[cur][i];
      if (!f[nxt])
        if (f[cur] == -1)
          f[nxt] = 1, Q.push(nxt);
        else {
          d[nxt]--;
          if (!d[nxt]) f[nxt] = -1, Q.push(nxt);
        }
    }
  }
}
void rua() {
  int F, x, a[5] = {}, b[5] = {};
  scanf("%d", &F);
  for (int i = 0; i < 8; i++) scanf("%d", &x), a[x]++;
  for (int i = 0; i < 8; i++) scanf("%d", &x), b[x]++;
  int k1 = a[1] * 729 + a[2] * 81 + a[3] * 9 + a[4];
  int k2 = b[1] * 729 + b[2] * 81 + b[3] * 9 + b[4];
  if (F)
    printf("%s\n", f[m[k2] * 500 + m[k1]]
                       ? (f[m[k2] * 500 + m[k1]] > 0 ? "Bob" : "Alice")
                       : "Deal");
  else
    printf("%s\n", f[m[k1] * 500 + m[k2]]
                       ? (f[m[k1] * 500 + m[k2]] > 0 ? "Alice" : "Bob")
                       : "Deal");
}
int main() {
  build();
  bfs();
  scanf("%d", &T);
  while (T--) rua();
  return 0;
}
