#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 10;
struct zy {
  int to, ne;
} e[N * 2];
int w[N], d[N];
int T, n, x, y, i, j, t, bz, s, p, l;
char a[N];
inline int read() {
  int x = 0;
  char c = getchar();
  while (c < '0' || c > '9') c = getchar();
  while ('0' <= c && c <= '9')
    x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
  return x;
}
inline void ad(int x, int y) {
  e[++t].to = y;
  e[t].ne = w[x];
  w[x] = t;
  d[x]++;
}
int main() {
  for (T = read(); T; --T) {
    n = read();
    t = 0;
    for (i = 1; i <= n; ++i) w[i] = d[i] = 0;
    for (i = 1; i < n; ++i) x = read(), y = read(), ad(x, y), ad(y, x);
    scanf("%s", a + 1);
    l = strlen(a + 1);
    if (n < 3) {
      printf("Draw\n");
      continue;
    }
    if (n == 3) {
      s = 0;
      for (i = 1; i <= l; ++i)
        if (a[i] == 'W') s++;
      if (s >= 2)
        printf("White\n");
      else
        printf("Draw\n");
      continue;
    }
    for (i = 1; i <= l; ++i)
      if (a[i] == 'W') ad(i, ++n), w[n] = 0, ad(n, i), d[n] = 3;
    bz = s = 0;
    for (i = 1; i <= n && (!bz); ++i)
      if (d[i] > 3)
        bz = 1;
      else if (d[i] == 3) {
        p = 0;
        for (j = w[i]; j; j = e[j].ne) p += d[e[j].to] > 1;
        bz = (p > 1);
        s++;
      }
    if (s == 2 && (n & 1)) bz = 1;
    if (bz)
      printf("White\n");
    else
      printf("Draw\n");
  }
  return 0;
}
