#include <bits/stdc++.h>
using namespace std;
const int N = 550000;
vector<pair<int, int>> edges;
vector<int> adj[N];
int ban[N], cnt[N], col[N], link[N];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0), cout.tie(0);
  int T;
  cin >> T;
  while (T--) {
    int n;
    cin >> n;
    edges.clear();
    memset(cnt, 0, sizeof(int) * (n + 10));
    memset(ban, 0, sizeof(int) * (n + 10));
    memset(col, 0, sizeof(int) * (n + 10));
    for (int i = 1; i < n; i++) {
      int u, v;
      cin >> u >> v;
      edges.emplace_back(u, v);
      cnt[u]++, cnt[v]++;
      link[u] = v, link[v] = u;
    }
    string s;
    cin >> s;
    int cn = 0;
    for (int i = 1; i <= n; i++) {
      if (s[i - 1] == 'W') {
        col[i] = 1;
        cn++;
      }
    }
    if (n <= 2) {
      cout << "Draw" << endl;
      continue;
    }
    if (n == 3) {
      if (cn >= 2)
        cout << "White" << endl;
      else
        cout << "Draw" << endl;
      continue;
    }
    int flg = 0;
    for (int i = 1; i <= n; i++) {
      if (col[i] && cnt[i] >= 2) {
        flg = 1;
        break;
      }
    }
    if (flg) {
      cout << "White" << endl;
      continue;
    }
    for (int i = 1; i <= n; i++) {
      if (col[i] && cnt[link[i]] > 2) {
        flg = 1;
        break;
      }
    }
    if (flg) {
      cout << "White" << endl;
      continue;
    }
    for (int i = 1; i <= n; i++) adj[i].clear();
    for (auto t : edges) {
      int u = t.first, v = t.second;
      adj[u].push_back(v);
      adj[v].push_back(u);
    }
    for (int i = 1; i <= n; i++) {
      if (cnt[i] > 3) {
        flg = 1;
        break;
      }
    }
    if (flg) {
      cout << "White" << endl;
      for (int i = 1; i <= n; i++) adj[i].clear();
      continue;
    }
    vector<int> v3;
    for (int i = 1; i <= n; i++) {
      if (cnt[i] >= 3) {
        v3.push_back(i);
      }
    }
    if (v3.size() > 2) {
      cout << "White" << endl;
      for (int i = 1; i <= n; i++) adj[i].clear();
      continue;
    }
    for (int x : v3) {
      int leaf = 0;
      for (int y : adj[x]) {
        if (cnt[y] == 1) leaf++;
      }
      if (leaf <= 1) {
        flg = 1;
        break;
      }
    }
    if (flg) {
      cout << "White" << endl;
      for (int i = 1; i <= n; i++) adj[i].clear();
      continue;
    }
    if (v3.size() == 2) {
      if (n & 1)
        cout << "White" << endl;
      else
        cout << "Draw" << endl;
      for (int i = 1; i <= n; i++) adj[i].clear();
      continue;
    }
    for (int i = 1; i <= n; i++) adj[i].clear();
    if (v3.size() == 1) {
      if (!cn) {
        cout << "Draw" << endl;
        continue;
      } else {
        if (n & 1)
          cout << "Draw" << endl;
        else
          cout << "White" << endl;
      }
      continue;
    }
    if (v3.empty()) {
      if (cn < 2) {
        cout << "Draw" << endl;
        continue;
      } else {
        if (n & 1)
          cout << "White" << endl;
        else
          cout << "Draw" << endl;
      }
    }
  }
}
