#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
const int mod = 998244353;
struct mint {
int n;
mint(int n_ = 0) : n(n_) {}
};
mint operator+(mint a, mint b) { a.n += b.n; if (a.n >= mod) a.n -= mod; return a; }
mint operator*(mint a, mint b) { return mint((long long)a.n * b.n % mod); }
mint &operator+=(mint &a, mint b) { return a = a + b; }
mint &operator*=(mint &a, mint b) { return a = a * b; }
mint mpow(mint a, int b) {
mint res = 1;
for (; b > 0; a *= a, b >>= 1) if (b & 1) res *= a;
return res;
}
mint minv(mint a) {
return mpow(a, mod - 2);
}
struct Foo {
int u, v;
mint w;
};
vector<Foo> foos;
vector<int> g[240];
int n;
void dfs(int u, int p = -1) {
int cnt = 0;
for (int v : g[u]) if (v != p) {
dfs(v, u);
cnt++;
}
for (int v : g[u]) if (v != p) {
foos.push_back((Foo){u, v, minv(cnt)});
}
int xu = cnt == 0 ? u : u + n;
int xv = p == 0 ? p : p + n;
foos.push_back((Foo){xu, xv, 1});
}
int main() {
cin >> n;
for (int i = 0; i < n - 1; i++) {
int u, v;
cin >> u >> v;
u--;
v--;
g[u].push_back(v);
g[v].push_back(u);
}
int m;
cin >> m;
vector<int> t(m);
for (int i = 0; i < m; i++) {
cin >> t[i];
}
sort(t.rbegin(), t.rend());
int q;
cin >> q;
dfs(0, -1);
vector<mint> ans(n * 2);
vector<mint> p0(n * 2);
vector<mint> p1(n * 2);
for (int i = 1; i <= q; i++) {
while (!t.empty() && t.back() == i) {
p0[0] += 1;
t.pop_back();
}
for (int i = 0; i < n * 2; i++) {
ans[i] += p0[i];
p1[i] = 0;
}
for (Foo f : foos) {
p1[f.v] += p0[f.u] * f.w;
}
swap(p0, p1);
}
for (int i = 0; i < n; i++) {
ans[i] += ans[i + n];
printf("%d ", ans[i].n);
}
puts("");
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBtb2QgPSA5OTgyNDQzNTM7CgpzdHJ1Y3QgbWludCB7CiAgaW50IG47CiAgbWludChpbnQgbl8gPSAwKSA6IG4obl8pIHt9Cn07CgptaW50IG9wZXJhdG9yKyhtaW50IGEsIG1pbnQgYikgeyBhLm4gKz0gYi5uOyBpZiAoYS5uID49IG1vZCkgYS5uIC09IG1vZDsgcmV0dXJuIGE7IH0KbWludCBvcGVyYXRvcioobWludCBhLCBtaW50IGIpIHsgcmV0dXJuIG1pbnQoKGxvbmcgbG9uZylhLm4gKiBiLm4gJSBtb2QpOyB9Cm1pbnQgJm9wZXJhdG9yKz0obWludCAmYSwgbWludCBiKSB7IHJldHVybiBhID0gYSArIGI7IH0KbWludCAmb3BlcmF0b3IqPShtaW50ICZhLCBtaW50IGIpIHsgcmV0dXJuIGEgPSBhICogYjsgfQoKbWludCBtcG93KG1pbnQgYSwgaW50IGIpIHsKICBtaW50IHJlcyA9IDE7CiAgZm9yICg7IGIgPiAwOyBhICo9IGEsIGIgPj49IDEpIGlmIChiICYgMSkgcmVzICo9IGE7CiAgcmV0dXJuIHJlczsKfQoKbWludCBtaW52KG1pbnQgYSkgewogIHJldHVybiBtcG93KGEsIG1vZCAtIDIpOwp9CgpzdHJ1Y3QgRm9vIHsKICBpbnQgdSwgdjsKICBtaW50IHc7Cn07Cgp2ZWN0b3I8Rm9vPiBmb29zOwp2ZWN0b3I8aW50PiBnWzI0MF07CmludCBuOwoKdm9pZCBkZnMoaW50IHUsIGludCBwID0gLTEpIHsKICBpbnQgY250ID0gMDsKICBmb3IgKGludCB2IDogZ1t1XSkgaWYgKHYgIT0gcCkgewogICAgZGZzKHYsIHUpOwogICAgY250Kys7CiAgfQogIGZvciAoaW50IHYgOiBnW3VdKSBpZiAodiAhPSBwKSB7CiAgICBmb29zLnB1c2hfYmFjaygoRm9vKXt1LCB2LCBtaW52KGNudCl9KTsKICB9CiAgaW50IHh1ID0gY250ID09IDAgPyB1IDogdSArIG47CiAgaW50IHh2ID0gcCA9PSAwID8gcCA6IHAgKyBuOwogIGZvb3MucHVzaF9iYWNrKChGb28pe3h1LCB4diwgMX0pOwp9CgppbnQgbWFpbigpIHsKICBjaW4gPj4gbjsKICBmb3IgKGludCBpID0gMDsgaSA8IG4gLSAxOyBpKyspIHsKICAgIGludCB1LCB2OwogICAgY2luID4+IHUgPj4gdjsKICAgIHUtLTsKICAgIHYtLTsKICAgIGdbdV0ucHVzaF9iYWNrKHYpOwogICAgZ1t2XS5wdXNoX2JhY2sodSk7CiAgfQogIGludCBtOwogIGNpbiA+PiBtOwogIHZlY3RvcjxpbnQ+IHQobSk7CiAgZm9yIChpbnQgaSA9IDA7IGkgPCBtOyBpKyspIHsKICAgIGNpbiA+PiB0W2ldOwogIH0KICBzb3J0KHQucmJlZ2luKCksIHQucmVuZCgpKTsKICBpbnQgcTsKICBjaW4gPj4gcTsKICBkZnMoMCwgLTEpOwogIHZlY3RvcjxtaW50PiBhbnMobiAqIDIpOwogIHZlY3RvcjxtaW50PiBwMChuICogMik7CiAgdmVjdG9yPG1pbnQ+IHAxKG4gKiAyKTsKICBmb3IgKGludCBpID0gMTsgaSA8PSBxOyBpKyspIHsKICAgIHdoaWxlICghdC5lbXB0eSgpICYmIHQuYmFjaygpID09IGkpIHsKICAgICAgcDBbMF0gKz0gMTsKICAgICAgdC5wb3BfYmFjaygpOwogICAgfQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuICogMjsgaSsrKSB7CiAgICAgIGFuc1tpXSArPSBwMFtpXTsKICAgICAgcDFbaV0gPSAwOwogICAgfQogICAgZm9yIChGb28gZiA6IGZvb3MpIHsKICAgICAgcDFbZi52XSArPSBwMFtmLnVdICogZi53OwogICAgfQogICAgc3dhcChwMCwgcDEpOwogIH0KICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgYW5zW2ldICs9IGFuc1tpICsgbl07CiAgICBwcmludGYoIiVkICIsIGFuc1tpXS5uKTsKICB9CiAgcHV0cygiIik7Cn0K