#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void read(T &x) {
  x = 0;
  char c = getchar();
  int f = 1;
  while (!isdigit(c)) {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (isdigit(c)) x = x * 10 - '0' + c, c = getchar();
  x *= f;
}
const int N = 5e5 + 10;
vector<int> G[N];
char str[N];
int n;
bool solve() {
  int flg = 0, x, y;
  read(n);
  for (int i = 1; i < n; ++i) {
    read(x), read(y);
    G[x].push_back(y), G[y].push_back(x);
  }
  scanf("%s", str + 1);
  if (n < 3)
    flg = 0;
  else if (n == 3) {
    int tot = 0;
    for (int i = 1; i <= n; ++i) tot += str[i] == 'W';
    flg = tot >= 2;
  } else {
    for (int i = 1; i <= n; ++i) {
      if (G[i].size() > 3 || (str[i] == 'W' && G[i].size() > 1))
        flg = 1;
      else if (G[i].size() == 3) {
        int cnt = 0;
        for (int j = 0; j < G[i].size(); ++j) {
          cnt += G[G[i][j]].size() > 1;
          if (str[G[i][j]] == 'W') cnt = 2;
        }
        if (cnt >= 2) flg = 1;
      }
    }
    if (!flg) {
      int tot = 0, cnt = 0;
      for (int i = 1; i <= n; ++i)
        tot += G[i].size() == 3, cnt += str[i] == 'W';
      if (tot == 0)
        flg = cnt == 2 && (n & 1);
      else if (tot == 1)
        flg = cnt && (n % 2 == 0);
      else if (tot == 2)
        flg = n & 1;
    }
  }
  for (int i = 1; i <= n; ++i) G[i].clear();
  return flg;
}
int main() {
  int T;
  read(T);
  while (T--)
    if (solve())
      puts("White");
    else
      puts("Draw");
  return 0;
}
