#include using namespace std; using ll = long long; using vi = vector; using pi = pair ; using vvi = vector; void solve () { int n; cin >> n; vvi g(n); for (int i = 1; i < n; ++i) { int u, v; cin >> u >> v; g[u].push_back(v); g[v].push_back(u); } int k; cin >> k; vi s1(k), s2(k); for (auto& x : s1) cin >> x; for (auto& x : s2) cin >> x; vi ins1(n), ins2(n); for (auto x : s1) ++ins1[x]; for (auto x : s2) ++ins2[x]; vi up(n), down(n); vector> cmd, cmdback; auto Dfs = [&](auto&& self, int v, int f) -> int { int diff = ins1[v] - ins2[v]; for (auto u : g[v]) { if (u == f) continue; int c = self(self, u, v); diff += c; if (c > 0) cmd.emplace_back(u, v, c); if (c < 0) cmdback.emplace_back(v, u, -c); } return diff; }; int r = Dfs(Dfs, 0, -1); if (r) { cout << "-1\n"; return; } reverse(cmdback.begin(), cmdback.end()); cout << (cmd.size() + cmdback.size()) << '\n'; for (auto[f, t, c] : cmd) cout << f << ' ' << t << ' ' << c << '\n'; for (auto[f, t, c] : cmdback) cout << f << ' ' << t << ' ' << c << '\n'; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); solve(); return 0; }