#include<bits/stdc++.h>
#define ll long long
#define all(a) a.begin(),a.end()
#define rall(a) a.rbegin(),a.rend()
#define endl "\n"
#define vi(a) vector<int> 
#define vll(a) vector<long long> a
#define x first
#define y second
#define rep(i, x, n) for (ll i = x; i <= n; i++)
#define dep(i, x, n) for (ll i = x; i >= n; i--)
using namespace std;
const int INF=1e9;
const ll LINF=4e18;
const int MOD=1e9+7;
const int MOD2=998244353;
// const pair<ll,ll> P[9]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
const pair<ll,ll> P[6]={{-1,0},{1,0},{0,-1},{0,1},{0,0}};
// ll X[5]={-1,1,0,0};
// ll Y[5]={0,0,-1,1};
ll ans,n,k,ym,m,x,y;
string s;
const int MAX = 998244353;
const int N = 2000005;
ll dfs(ll x,ll y,vector<vector<ll>> &a,vector<vector<bool>> &f,vector<vector<bool>> &ff){
    ll s=0;
    rep(i,0,3){
        ll nx=x+P[i].x;
        ll ny=y+P[i].y;
        if(nx<1||nx>n||ny<1||ny>m) continue;
        if (a[nx][ny]&&f[nx][ny]==0){
            f[nx][ny]=1;
            s+=dfs(nx,ny,a,f,ff);
        }
        else if (!a[nx][ny]&&!ff[nx][ny]) {ff[nx][ny]=1;s++;}
    }
    return s;
}
void solve()
{
	cin>>n>>m;
    ll red=0;
    queue<pair<ll,ll>> q;
    vector<vector<ll>> a(n+1,vector<ll>(m+1));
    rep(i,1,n){
        rep(j,1,m){
            char c;
            cin>>c;
            if (c=='#') {a[i][j]=1;red++;q.push({i,j});}
            else a[i][j]=0;
        }
    }
    if (red==0){
        cout<<"Blue"<<endl;
        return ;
    }
    vector<vector<bool>> f(n+1,vector<bool>(m+1,0));
    while(!q.empty()){
        if (f[q.front().x][q.front().y]){q.pop();continue;}
        vector<vector<bool>> ff(n+1,vector<bool>(m+1,0));
        f[q.front().x][q.front().y]=1;
        if (dfs(q.front().x,q.front().y,a,f,ff)+red==n*m){
            cout<<"Red"<<endl;
            return ;
        }
        q.pop();
    }
    cout<<"Draw"<<endl;
	return ;
}
int main()
{
	ios_base::sync_with_stdio(false); 
	cin.tie(0);
	cout.tie(0);
	int T=1;
	cin>>T;
	while(T--) solve();
	return 0;
}