#include<bits/stdc++.h>
#define ll              long long
#define test_case(t)    for(int z=1;z<=t;z++)
#define print_case      printf("Case %d: ",z)
#define gcd(a, b)       __gcd(a, b)
#define lcm(a, b)       ((a)*((b)/gcd(a,b)))
#define fast            ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define pb              push_back
#define ff              front
#define fi              first
#define ss              second
#define pll             pair< ll, ll >
#define mpp(a,b,c)      mp(mp(a,b),c)
#define mp              make_pair
#define clr(x)          memset(x,0,sizeof(x));
// Have to comment out the following lines befor submitting, they are for debugging.
#define _GLIBCXX_DEBUG       // Iterator safety; out-of-bounds access for Containers, etc.
#pragma GCC optimize "trapv" // abort() on (signed) integer overflow.
using namespace std;


/*----------------------Graph Moves----------------*/
//const int fx[]={+1,-1,+0,+0};
//const int fy[]={+0,+0,+1,-1};
//const int fx[]={+0,+0,+1,-1,-1,+1,-1,+1};   // Kings Move
//const int fy[]={-1,+1,+0,+0,+1,+1,-1,-1};  // Kings Move
//const int fx[]={-2, -2, -1, -1,  1,  1,  2,  2};  // Knights Move
//const int fy[]={-1,  1, -2,  2, -2,  2, -1,  1}; // Knights Move
/*------------------------------------------------*/
bool is_palindrom(string a){
    string b = a;
    reverse(a.begin(), a.end());
    if(a == b)
        return true;
    else
        return false;

}

int main()
{
/*#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif    */

    fast;
    ll t;
    cin >> t;
    while(t--){
        ll n, input;
        cin >> n;
        string s;
        cin >> s;

        if(is_palindrom(s)){
            ll cnt = 0;
            for(ll i = 0; i < n; i++){
                if(s[i] == '0')
                    cnt++;
            }


            if(cnt%2){
                if(cnt == 1)
                    cout << "BOB";
                else
                    cout << "ALICE";
            }
            else{
                cout << "BOB";
            }
            cout << "\n";
            continue;
        }

        ll c_eq = 0, c_un = 0;

        for(ll i = 0, j = n-1; i < j; i++, j--){
            if(s[i] == '0' && s[j] == '0')
                c_eq++;
            if(s[i] != s[j])
                c_un++;
        }

        if(n%2){
            if(s[n/2]=='0' && c_un == 1 && c_eq == 0){
                cout << "DRAW" << "\n";
                continue;
            }
            cout << "ALICE" << "\n";

        }
        else
            cout << "ALICE" << "\n";

    }
    return 0;
}
