#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;
}