#include <bits/stdc++.h>
using namespace std;
vector<int> Neighbors[2000000];
bool Visited[2000000];
bool Leaf[2000000];
char Color[500001];
queue<int> Queue;
void bfs(int i) {
  Visited[i] = true;
  Queue.push(i);
  while (Queue.empty() == false) {
    int u = Queue.front();
    Queue.pop();
    Leaf[u] = true;
    for (int v = 0; v < Neighbors[u].size(); v++)
      if (Visited[Neighbors[u][v]] == false) {
        Visited[Neighbors[u][v]] = true;
        Queue.push(Neighbors[u][v]);
        Leaf[u] = false;
      }
  }
}
int main() {
  int T;
  scanf("%d", &T);
  for (int t = 1; t <= T; t++) {
    int n;
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) Neighbors[i].clear();
    int u, v;
    for (int i = 0; i + 1 < n; i++) {
      scanf("%d %d", &u, &v);
      Neighbors[u].push_back(v);
      Neighbors[v].push_back(u);
    }
    scanf("%s", Color);
    if (n < 3) {
      printf("Draw\n");
      continue;
    }
    int n_ = n;
    for (int i = 1; i <= n; i++)
      if (Color[i - 1] == 'W') {
        Neighbors[n_ + 1].clear();
        Neighbors[n_ + 2].clear();
        Neighbors[n_ + 3].clear();
        Neighbors[i].push_back(n_ + 1);
        Neighbors[n_ + 1].push_back(i);
        Neighbors[n_ + 1].push_back(n_ + 2);
        Neighbors[n_ + 1].push_back(n_ + 3);
        Neighbors[n_ + 2].push_back(n_ + 1);
        Neighbors[n_ + 3].push_back(n_ + 1);
        n_ += 3;
      }
    n = n_;
    int won = 0;
    for (int i = 1; i <= n; i++)
      if (Neighbors[i].size() >= 4) {
        printf("White\n");
        won = 1;
        break;
      }
    if (won) continue;
    for (int i = 1; i <= n; i++) Visited[i] = 0;
    bfs(1);
    if (Neighbors[1].size() == 1) Leaf[1] = true;
    for (int i = 1; i <= n; i++)
      if (Neighbors[i].size() >= 3) {
        int leaves = 0;
        for (int j = 0; j < Neighbors[i].size(); j++)
          if (Leaf[Neighbors[i][j]]) leaves++;
        if (Neighbors[i].size() - leaves >= 2) {
          printf("White\n");
          won = 1;
          break;
        }
      }
    if (won) continue;
    int left = 1;
    while (left <= n && Neighbors[left].size() < 3) left++;
    int right = n;
    while (right > 0 && Neighbors[right].size() < 3) right--;
    if (left <= n && right > 0 && left < right) {
      int curr, prev = left;
      int len = 2;
      for (int i = 0; i < Neighbors[prev].size(); i++)
        if (Leaf[Neighbors[prev][i]] == 0) curr = Neighbors[prev][i];
      while (curr != right) {
        if (Neighbors[curr][0] != prev) {
          prev = curr;
          curr = Neighbors[curr][0];
        } else {
          prev = curr;
          curr = Neighbors[curr][1];
        }
        len++;
      }
      if (len % 2 == 1) {
        printf("White\n");
        continue;
      }
    }
    printf("Draw\n");
  }
  return 0;
}
