//使用0,1编码位置是否被占据,使用位运算进行搜索
#include<iostream>
#include<vector>
#include<unordered_map>
using namespace std;
//棋盘状态记录
vector<int> rec;
//记忆化搜索
unordered_map<int, bool> memo;
//读入顺序映射到标准数组的位置
const int arr[16]={0,2,5,9, 1,4,8,12, 3,7,11,14, 6,10,13,15};
void record(){
    rec.clear();
    for(int i=0;i<4;i++){
        for(int j=0;j<4;j++){
            int m0=1<<(4*i+j);
            rec.push_back(m0);
            int m1=m0,m2=m0,m3=m0,m4=m0;
            for(int l=1;l<3;l++){
                if(i+l<4){
                    m1+=1<<(4*(i+l)+j);
                    rec.push_back(m1);
                }if(j+l<4){
                    m2+=1<<(4*i+j+l);
                    rec.push_back(m2);
                }if((i+l<4)&&(j+l<4)){
                    m3+=1<<(4*(i+l)+j+l);
                    rec.push_back(m3);
                }if((i+l<4)&&(j-l>=0)){
                    m4+=1<<(4*(i+l)+j-l);
                    rec.push_back(m4);
                }
            }
        }
    }
}
bool Win(int mask, const vector<int>& moves) {
    if (memo.count(mask)) return memo[mask];
    for (int move : moves) {
        if ((mask & move) == 0) {
            if (!Win(mask | move, moves)) {
                return memo[mask] = true;
            }
        }
    }
    return memo[mask] = false;
}
void solve(){
    char p[16];
    int q[16];
    for(int i=0;i<16;i++){
        cin>>p[i];
    }for(int i=0;i<16;i++){
        q[i]=(p[arr[i]]=='.')?0:1;
    }int tar=0;
    for(int i=0;i<16;i++){
        tar=(tar<<1)+q[i];
    }if(Win(tar,rec)){
        cout<<"Alice"<<endl;
    }else{
        cout<<"Bob"<<endl;
    }
}
int main(){
    int T;
    cin>>T;
    while(T--){
        record();
        solve();
    }
    return 0;
}