#include <bits/stdc++.h>
using namespace std;
const int maxn = 2000006;
int t, n, cnt, h, firs[maxn], a, b, d[maxn], y[maxn];
char s[maxn];
struct edge {
  int too, nex;
} g[maxn << 1];
void add(int x, int y) {
  g[++h].too = y;
  g[h].nex = firs[x];
  firs[x] = h;
  d[x]++;
  d[y]++;
}
int main() {
  scanf("%d", &t);
  while (t--) {
    memset(firs, 0, sizeof(int) * (cnt + 5));
    memset(d, 0, sizeof(int) * (cnt + 5));
    memset(y, 0, sizeof(int) * (cnt + 5));
    scanf("%d", &n);
    h = 0, cnt = n;
    for (register int i = 1; i < n; ++i) {
      scanf("%d%d", &a, &b);
      add(a, b);
      add(b, a);
    }
    scanf("%s", s + 1);
    for (register int i = 1; i <= n; ++i)
      if (s[i] == 'W') {
        ++cnt;
        add(i, cnt), add(cnt, i);
        ++cnt;
        add(cnt, cnt - 1), add(cnt - 1, cnt);
        ++cnt;
        add(cnt, cnt - 2), add(cnt - 2, cnt);
      }
    if (n < 3) {
      puts("Draw");
      continue;
    }
    if (n == 3) {
      int wt = 0;
      for (register int i = 1; i <= n; ++i)
        if (s[i] == 'W') wt++;
      if (wt >= 2)
        puts("White");
      else
        puts("Draw");
      continue;
    }
    int ans = 0, k;
    for (register int i = 1; i <= cnt; ++i)
      if (d[i] > 6) ans = 1;
    for (register int i = 1; i <= cnt; ++i) {
      if (d[i] == 2) continue;
      for (register int j = firs[i]; j; j = g[j].nex) {
        k = g[j].too;
        y[k]++;
      }
    }
    for (register int i = 1; i <= cnt; ++i)
      if (d[i] == 6 && y[i] >= 2) ans = 1;
    int nct = 0;
    for (register int i = 1; i <= cnt; ++i)
      if (d[i] == 6 && y[i] == 1) nct++;
    if (nct == 2 && (cnt % 2)) ans = 1;
    if (ans)
      puts("White");
    else
      puts("Draw");
  }
  return 0;
}
