Temp Code Page
#include <bits/stdc++.h>
using namespace std;

struct node
{
    int same;
    int num;
    bool operator<(node const &o) const
    {
        if (same == o.same)
            return num < o.num;
        else
            return same < o.same;
    }
};

int num[2][20] = {0};
int col[2][5] = {0};
int handClass[2] = {0};
priority_queue<node> pairQueue[2];
priority_queue<node> testPairQueue[2];

void init()
{
    for (int i = 0; i < 20; i++)
    {
        num[0][i] = 0;
        num[1][i] = 0;
    }
    for (int i = 0; i < 5; i++)
    {
        col[0][i] = 0;
        col[1][i] = 0;
    }
    handClass[0] = 1;
    handClass[1] = 1;
    for (int i = 0; i < 2; i++)
    {
        while (pairQueue[i].size())
            pairQueue[i].pop();
        while (testPairQueue[i].size())
            testPairQueue[i].pop();
    }
}

void add_col(char c, int p)
{
    switch (c)
    {
    case 'S':
        col[p][0]++;
        break;
    case 'H':
        col[p][1]++;
        break;
    case 'C':
        col[p][2]++;
        break;
    case 'D':
        col[p][3]++;
        break;
    }
}

void add_num(char c, int p)
{
    switch (c)
    {
    case 'T':
        num[p][10]++;
        break;
    case 'J':
        num[p][11]++;
        break;
    case 'Q':
        num[p][12]++;
        break;
    case 'K':
        num[p][13]++;
        break;
    case 'A':
        num[p][1]++;
        num[p][14]++;
        break;
    default:
        num[p][c - '0']++;
        break;
    }
}

int check_king(int p)
{
    int flag = 1;
    for (int i = 10; i < 15; i++)
    {
        if (num[p][i] == 0)
        // if (num[i] == 0)
        {
            flag = 0;
            break;
        }
    }
    return flag;
}

int common_compare()
{
    for (int i = 14; i > 0; i--)
    {
        if (num[0][i] == num[1][i])
        {
            continue;
        }
        if (num[0][i] > num[1][i])
        {
            // 从大向小比较,先大的说明大牌多,获胜
            return 0;
        }
        else
        {
            return 1;
        }
    }
    return 2;
}

int special_compare()
{
    int minA = -1;
    int minB = -1;
    for (int i = 1; i < 15; i++)
    {
        if (num[0][i] == num[0][i + 1] && num[0][i] != 0)
        {
            minA = i;
            break;
        }
    }
    for (int i = 1; i < 15; i++)
    {
        if (num[1][i] == num[1][i + 1] && num[1][i] != 0)
        {
            minB = i;
            break;
        }
    }
    if (minA == minB)
    {
        return 2;
    }
    else if (minA > minB)
    {
        return 0;
    }
    else
    {
        return 1;
    }
}

int compare(int c)
{
    //  c 表示牌型,不同的判断不一样。
    // 返回 2 表示平局,返回 0 或者 1 表示对应的人获胜
    int ans = -1;
    switch (c)
    {
    case 9:; // 同花顺,顺序比较即可,但是因为有 A 所以要特判
    case 5:  // 顺子,顺序比较即可,但是因为有 A 所以要特判
        ans = special_compare();
        break;
    case 10:
        ans = 2; // 皇家同花顺,都是平局
    case 6:;     // 同花,顺序从大向小比较即可
    case 1:      // 啥也不是,顺序从大向小比较即可
        ans = common_compare();
        break;
    case 8: // 四个相同,先看相同的,再看剩下的那一张
        if (pairQueue[0].top().num == pairQueue[1].top().num)
        {
            ans = common_compare();
            // ans = 2;
        }
        else if (pairQueue[0].top().num < pairQueue[1].top().num)
        {
            ans = 1;
        }
        else
        {
            ans = 0;
        }
        break;
    case 7: // 先看三个,再看两个
        if (pairQueue[0].top().num == pairQueue[1].top().num)
        {
            // 三个相等,无法判断,所以要看两个了
            pairQueue[0].pop();
            pairQueue[1].pop();
            if (pairQueue[0].top().num == pairQueue[1].top().num)
            {
                // 一共五张牌,3 和 2 都相等,没必要在看了,直接平局
                ans = 2;
            }
            else if (pairQueue[0].top().num < pairQueue[1].top().num)
            {
                ans = 1;
            }
            else
            {
                ans = 0;
            }

        } // 否则可以判断
        else if (pairQueue[0].top().num < pairQueue[1].top().num)
        {
            ans = 1;
        }
        else
        {
            ans = 0;
        }
        break;
    case 4: // 先看三个,剩下的单张顺序比较
        if (pairQueue[0].top().num == pairQueue[1].top().num)
        {
            ans = common_compare();
        } // 否则可以判断
        else if (pairQueue[0].top().num < pairQueue[1].top().num)
        {
            ans = 1;
        }
        else
        {
            ans = 0;
        }
        break;
    case 3: // 先看大对,再看小对,最后看单张
        if (pairQueue[0].top().num == pairQueue[1].top().num)
        {
            // 大对相等,看小对
            pairQueue[0].pop();
            pairQueue[1].pop();
            if (pairQueue[0].top().num == pairQueue[1].top().num)
            {
                ans = common_compare();
                // ans = 2;
            } // 小对可判断
            else if (pairQueue[0].top().num < pairQueue[1].top().num)
            {
                ans = 1;
            }
            else
            {
                ans = 0;
            }
        } // 否则可以判断
        else if (pairQueue[0].top().num < pairQueue[1].top().num)
        {
            ans = 1;
        }
        else
        {
            ans = 0;
        }
        break;
    case 2: // 先看单对,再看单张顺序
        if (pairQueue[0].top().num == pairQueue[1].top().num)
        {
            ans = common_compare();
        } // 否则可以判断
        else if (pairQueue[0].top().num < pairQueue[1].top().num)
        {
            ans = 1;
        }
        else
        {
            ans = 0;
        }
        break;
    }
    return ans;
}

void check()
{
    string alice = "";
    string bob = "";
    int flag_col[2] = {0};
    int flag_num_con[2] = {0};
    priority_queue<int> flag_num_pair[2];
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            if (col[i][j] == 5) // 说明是同花
            {
                flag_col[i] = 1;
                break;
            }
        }
        int cnt = 0;
        node temp;
        for (int j = 1; j < 14; j++)
        {
            if (num[i][j] == 1 && num[i][j + 1] == 1)
            {
                cnt++;
            }
            else
            {
                cnt = 0;
            }
            if (cnt == 4) // 判断是不是连续五张
            {
                flag_num_con[i] = 1;
            }
            if (num[i][j] >= 2) // 判断是不是对子或者是三张相同
            {
                temp.same = num[i][j];
                temp.num = j;
                if (temp.num == 1)
                    temp.num = 14;
                pairQueue[i].push(temp);
                testPairQueue[i].push(temp);
                flag_num_pair[i].push(num[i][j]);
            }
        }
    }

    // cout << "+++++++  Alice:\n"
    //      << flag_col[0] << " " << flag_num_con[0] << endl;
    // cout << "+++++++  Bob:\n"
    //      << flag_col[1] << " " << flag_num_con[1] << endl;
    // 我们规定牌型按照从小到大,从1到10,每次赋值取 max
    for (int i = 0; i < 2; i++) // 判断两种同花的情况,区别在一个顺,一个不顺
    {
        if (flag_col[i])
        {
            // 是同花
            if (flag_num_con[i])
            {
                // 是顺子,因此满足同花顺,再判断是不是为皇家同花顺
                if (check_king(i))
                {
                    // 是皇家同花顺
                    handClass[i] = max(handClass[i], 10);
                }
                else
                {
                    // 只是普通同花顺
                    handClass[i] = max(handClass[i], 9);
                }
            }
            else
            {
                // 不是顺子,因此满足同花标准
                handClass[i] = max(handClass[i], 6);
            }
        }
        else
        {
            continue;
        }
    }
    for (int i = 0; i < 2; i++) // 判断是不是连续的,即是不是顺子
    {
        if (flag_num_con[i])
        {
            handClass[i] = max(handClass[i], 5);
        }
    }
    for (int i = 0; i < 2; i++) // 判断对子了开始。
    {
        int pairCount = 0; // 这个计数器只记录两张相同
        int flagThree = 0; // 统计三张相同
        int flagFour = 0;  // 统计四张相同
        int now = 0;
        while (flag_num_pair[i].size())
        {
            now = flag_num_pair[i].top();
            flag_num_pair[i].pop();
            switch (now)
            {
            case 2:
                pairCount++;
                break;
            case 3:
                flagThree = 1;
                break;
            case 4:
                flagFour = 1;
                break;
            }
        }
        if (flagFour)
        {
            handClass[i] = max(handClass[i], 8);
            continue;
        }
        else
        {
            if (flagThree)
            {
                // 这里有两种牌型,一种是 3+2 ,一种是单 3
                if (pairCount)
                {
                    // 说明是 3+2
                    handClass[i] = max(handClass[i], 7);
                }
                else
                {
                    // 说明是单 3
                    handClass[i] = max(handClass[i], 4);
                }
            }
            else
            {
                if (pairCount == 2)
                {
                    // 如果有两对
                    handClass[i] = max(handClass[i], 3);
                }
                else if (pairCount == 1)
                {
                    // 如果有一对
                    handClass[i] = max(handClass[i], 2);
                }
                else
                {
                    // 啥也不是,默认为1
                    continue;
                }
            }
        }
    }
    // 所有牌型都确定好了,然后判断牌型是不是相等
    if (handClass[0] == handClass[1])
    {
        // 说明牌型相等,要判断字典序,直接返回下标,如果返回 2 ,则说明平局
        int bigger = compare(handClass[0]);
        switch (bigger)
        {
        case 0:
            cout << "Alice";
            break;
        case 1:
            cout << "Bob";
            break;
        case 2:
            cout << "Draw";
            break;
        }
    }
    else
    {
        // 说明牌型不相等,直接输出较大的获胜
        if (handClass[0] > handClass[1])
        {
            cout << "Alice";
        }
        else
        {
            cout << "Bob";
        }
    }

    // cout << "\n##########\nPair of poker is:\n";
    // for (int i = 0; i < 2; i++)
    // {
    //     if (i)
    //     {
    //         puts("Bob:");
    //     }
    //     else
    //     {
    //         puts("Alice:");
    //     }
    //     while (testPairQueue[i].size())
    //     {
    //         node temp = testPairQueue[i].top();
    //         testPairQueue[i].pop();
    //         cout << temp.same << " " << temp.num << endl;
    //     }
    // }
    // cout << endl
    //      << "Classs : \n"
    //      << "Alice is " << handClass[0] << endl
    //      << "Bob is " << handClass[1] << endl;
}

// void out()
// {
//     cout << "+++++++++++++++\n";
//     for (int i = 0; i < 2; i++)
//     {
//         if (i)
//             cout << "Bob:\n";
//         else
//             cout << "Alice:\n";
//         cout << "color: \n";
//         for (int j = 0; j < 4; j++)
//         {
//             cout << col[i][j] << " ";
//         }
//         cout << "\nnumber:\n";
//         for (int j = 1; j < 15; j++)
//         {
//             cout << num[i][j] << " ";
//         }
//         cout << endl;
//     }
//     cout << "+++++++++++++++\n";
// }

void solve()
{
    string poker;
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            cin >> poker;
            add_col(poker[0], i);
            add_num(poker[1], i);
        }
    }
    // out();
    check();
}

int main()
{
    int t;
    int fff = 0;
    cin >> t;
    while (t--)
    {
        if (fff)
            cout << endl;
        fff = 1;
        init();
        solve();
    }
    return 0;
}