#include <bits/stdc++.h>
using namespace std;
struct fast_ios {
  fast_ios() {
    cin.tie(0);
    ios::sync_with_stdio(false);
    cout << fixed << setprecision(20);
  };
} fast_ios_;
template <typename T>
ostream &operator<<(ostream &os, const vector<T> &vec) {
  os << "[";
  for (auto v : vec) os << v << ",";
  os << "]";
  return os;
}
bool solve() {
  int N;
  cin >> N;
  vector<vector<int>> e(N);
  for (int _ = (0), __end_ = (N - 1); _ < __end_; _++) {
    int v, u;
    cin >> v >> u;
    v--, u--;
    e[v].push_back(u);
    e[u].push_back(v);
  }
  string S;
  cin >> S;
  int Nw = 0;
  for (auto c : S) Nw += (c == 'W');
  if (N < 3) return false;
  if (N == 3) return Nw >= 2;
  for (int i = (0), i_end_ = (N); i < i_end_; i++)
    if (e[i].size() >= 4) return true;
  for (int i = (0), i_end_ = (N); i < i_end_; i++)
    if (e[i].size() == 3) {
      int ne = 0;
      for (auto nxt : e[i])
        if (e[nxt].size() > 1) ne++;
      if (ne >= 2) return true;
    }
  for (int i = (0), i_end_ = (N); i < i_end_; i++)
    if (S[i] == 'W') {
      if (e[i].size() >= 2) return true;
      for (auto nxt : e[i])
        if (e[nxt].size() >= 3) return true;
    }
  if (Nw == 2) return N % 2;
  if (Nw == 1) {
    for (int i = (0), i_end_ = (N); i < i_end_; i++)
      if (e[i].size() == 3) return N % 2 == 0;
  }
  if (Nw == 0) {
    int nt = 0;
    for (int i = (0), i_end_ = (N); i < i_end_; i++)
      if (e[i].size() == 3) nt++;
    if (nt >= 2) return N % 2;
  }
  return false;
}
int main() {
  int T;
  cin >> T;
  while (T--) cout << (solve() ? "White" : "Draw") << endl;
}
