#include <bits/stdc++.h>
using namespace std;
using uint = unsigned int;
using ll = long long;
using ull = unsigned long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
const int NMAX = 500010;
template <typename T1, typename T2>
ostream &operator<<(ostream &out, const pair<T1, T2> &item) {
  out << '(' << item.first << ", " << item.second << ')';
  return out;
}
template <typename T>
ostream &operator<<(ostream &out, const vector<T> &v) {
  for (const auto &item : v) out << item << ' ';
  return out;
}
int deg[NMAX], nrLeafs[NMAX];
int a[NMAX], b[NMAX];
string cols;
bool check(int n) {
  int i;
  for (i = 1; i <= n; ++i) nrLeafs[i] = 0;
  for (i = 1; i < n; ++i) {
    if (deg[a[i]] == 1 && cols[a[i] - 1] == 'N') ++nrLeafs[b[i]];
    if (deg[b[i]] == 1 && cols[b[i] - 1] == 'N') ++nrLeafs[a[i]];
  }
  for (i = 1; i <= n; ++i)
    if (deg[i] == 3 && nrLeafs[i] <= 1) return true;
  return false;
}
int main() {
  ios_base::sync_with_stdio(false);
  int t, i, n, nrw, degmax, nr3;
  for (cin >> t; t; --t) {
    cin >> n;
    for (i = 1; i < n; ++i) {
      cin >> a[i] >> b[i];
      ++deg[a[i]];
      ++deg[b[i]];
    }
    cin >> cols;
    for (nrw = 0, i = 0; i < n; ++i)
      if (cols[i] == 'W') ++deg[i + 1], ++nrw;
    degmax = *max_element(deg + 1, deg + n + 1);
    if (nrw) degmax = max(degmax, 3);
    if (n <= 2 || degmax == 2)
      cout << "Draw\n";
    else if (degmax >= 4)
      cout << "White\n";
    else {
      for (nr3 = 0, i = 1; i <= n; ++i) nr3 += (deg[i] == 3);
      if (nr3 + nrw >= 3)
        cout << "White\n";
      else {
        if (check(n))
          cout << "White\n";
        else if (nr3 + nrw == 2 && (n + 3 * nrw - 4) % 2 == 1)
          cout << "White\n";
        else
          cout << "Draw\n";
      }
    }
    for (i = 1; i <= n; ++i) deg[i] = 0;
  }
  return 0;
}
