#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 10;
struct data {
  int nt, to;
} a[N << 4];
char lx[N];
int head[N << 2], d[N << 2], cnt = 0, sz = 0;
void add(int x, int y) {
  d[x]++, d[y]++;
  a[++cnt].to = y, a[cnt].nt = head[x], head[x] = cnt;
  a[++cnt].to = x, a[cnt].nt = head[y], head[y] = cnt;
}
void read(int &x) {
  char ch = getchar();
  x = 0;
  for (; ch < '0' || ch > '9'; ch = getchar())
    ;
  for (; ch >= '0' && ch <= '9'; ch = getchar())
    x = (x << 1) + (x << 3) + (ch ^ 48);
}
void init() {
  for (int i = 1; i <= sz; ++i) head[i] = d[i] = 0;
  cnt = sz = 0;
}
int main() {
  int T;
  read(T);
  for (int o = 1; o <= T; ++o) {
    int n;
    read(n);
    for (int i = 1, x, y; i < n; ++i) {
      read(x), read(y);
      add(x, y);
    }
    sz = n;
    scanf("%s", lx + 1);
    for (int i = 1; i <= n; ++i)
      if (lx[i] == 'W') add(i, ++sz), add(sz, sz + 1), add(sz, sz + 2), sz += 2;
    int flg = 0, tmp = 0;
    for (int i = 1; i <= sz; ++i) {
      int res = 0;
      for (int j = head[i]; j; j = a[j].nt) {
        if (d[a[j].to] >= 2) res++;
      }
      tmp += (d[i] >= 3);
      if (d[i] >= 4 || (d[i] >= 3 && res >= 2)) flg = 1;
    }
    if (flg)
      printf("White\n");
    else if (!tmp)
      printf("Draw\n");
    else if (tmp == 1)
      printf("Draw\n");
    else {
      if (sz & 1)
        printf("White\n");
      else
        printf("Draw\n");
    }
    init();
  }
  return 0;
}
