#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
// - Những bài truy vấn đường đi Không chỉ dừng lại ở những phép toán cơ bản như +, ^, min, max, gcd, lcm,...
// mà có thể mở rộng ra những phép toán/hàm phức tạp hơn
// - Ở bài này mỗi đỉnh ta sẽ có một vector lưu lại ID đã được sort của những người ở đỉnh này, chỉ giữ tối đa 10 phần tử
// - Ta định nghĩa thêm hàm combine(a, b) là hàm gộp 2 vector a, b đã sort thành 1 vector cũng được sort, chỉ giữ tối đa 10 phần tử
const int N = 1e5 + 5;
const int LOG = 17;
int n, m, q;
vector<int> c[N]; // c[u] = Danh sách ID đã được sort của những người ở đỉnh u
vector<int> adj[N];
int up[LOG][N]; // up[i][u] = Tổ tiên thứ 2^i của u
vector<int> IDs[LOG][N]; // IDs[i][u] = Danh sách ID đã được sort của những người nằm trên đường đi (u, up[i][u]) (không bao gồm up[i][u])
int depth[N];
int tin[N], tout[N], timer;
vector<int> combine(const vector<int> &a, const vector<int> &b) {
vector<int> ans(a.size() + b.size());
int i = 0, j = 0, k = 0;
while (i < a.size() && j < b.size()) {
if (a[i] < b[j]) ans[k++] = a[i++];
else ans[k++] = b[j++];
}
while (i < a.size()) ans[k++] = a[i++];
while (j < b.size()) ans[k++] = b[j++];
if (ans.size() > 10) ans.resize(10);
return ans;
}
void dfs(int u, int p) {
tin[u] = ++timer;
up[0][u] = p;
for (int i = 1; i < LOG; i++) {
up[i][u] = up[i - 1][up[i - 1][u]];
IDs[i][u] = combine(IDs[i - 1][u], IDs[i - 1][up[i - 1][u]]);
}
for (int v : adj[u]) {
if (v == p) continue;
IDs[0][v] = c[v];
depth[v] = depth[u] + 1;
dfs(v, u);
}
tout[u] = timer;
}
bool isAncestor(int u, int v) {
return (tin[u] <= tin[v] && tout[v] <= tout[u]);
}
int lca(int u, int v) {
if (isAncestor(u, v)) return u;
if (isAncestor(v, u)) return v;
for (int i = LOG - 1; i >= 0; i--) {
if (!isAncestor(up[i][u], v)) {
u = up[i][u];
}
}
return up[0][u];
}
vector<int> query(int u, int anc) {
vector<int> ans;
int diff = depth[u] - depth[anc];
for (int i = 0; i < LOG; i++) {
if ((diff >> i) & 1) {
ans = combine(ans, IDs[i][u]);
u = up[i][u];
}
}
return ans;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m >> q;
for (int i = 0; i < n - 1; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
for (int i = 1; i <= m; i++) {
int u; cin >> u;
if (c[u].size() < 10) c[u].push_back(i);
}
timer = 0;
depth[1] = 0;
dfs(1, 1);
while (q--) {
int u, v, k;
cin >> u >> v >> k;
int lca_uv = lca(u, v);
vector<int> ans = combine(query(u, lca_uv), query(v, lca_uv));
ans = combine(ans, c[lca_uv]);
k = min(k, (int)ans.size());
cout << k << ' ';
for (int i = 0; i < k; i++) {
cout << ans[i] << ' ';
}
cout << '\n';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKLy8gLSBOaOG7r25nIGLDoGkgdHJ1eSB24bqlbiDEkcaw4budbmcgxJFpIEtow7RuZyBjaOG7iSBk4burbmcgbOG6oWkg4bufIG5o4buvbmcgcGjDqXAgdG/DoW4gY8ahIGLhuqNuIG5oxrAgKywgXiwgbWluLCBtYXgsIGdjZCwgbGNtLC4uLiAKLy8gICBtw6AgY8OzIHRo4buDIG3hu58gcuG7mW5nIHJhIG5o4buvbmcgcGjDqXAgdG/DoW4vaMOgbSBwaOG7qWMgdOG6oXAgaMahbgovLyAtIOG7niBiw6BpIG7DoHkgbeG7l2kgxJHhu4luaCB0YSBz4bq9IGPDsyBt4buZdCB2ZWN0b3IgbMawdSBs4bqhaSBJRCDEkcOjIMSRxrDhu6NjIHNvcnQgY+G7p2Egbmjhu69uZyBuZ8aw4budaSDhu58gxJHhu4luaCBuw6B5LCBjaOG7iSBnaeG7ryB04buRaSDEkWEgMTAgcGjhuqduIHThu60KLy8gLSBUYSDEkeG7i25oIG5naMSpYSB0aMOqbSBow6BtIGNvbWJpbmUoYSwgYikgbMOgIGjDoG0gZ+G7mXAgMiB2ZWN0b3IgYSwgYiDEkcOjIHNvcnQgdGjDoG5oIDEgdmVjdG9yIGPFqW5nIMSRxrDhu6NjIHNvcnQsIGNo4buJIGdp4buvIHThu5FpIMSRYSAxMCBwaOG6p24gdOG7rSAKY29uc3QgaW50IE4gPSAxZTUgKyA1OyAKY29uc3QgaW50IExPRyA9IDE3OyAgIAoKaW50IG4sIG0sIHE7ICAKdmVjdG9yPGludD4gY1tOXTsgLy8gY1t1XSA9IERhbmggc8OhY2ggSUQgxJHDoyDEkcaw4bujYyBzb3J0IGPhu6dhIG5o4buvbmcgbmfGsOG7nWkg4bufIMSR4buJbmggdSAKdmVjdG9yPGludD4gYWRqW05dOyAKCmludCB1cFtMT0ddW05dOyAvLyB1cFtpXVt1XSA9IFThu5UgdGnDqm4gdGjhu6kgMl5pIGPhu6dhIHUgIAp2ZWN0b3I8aW50PiBJRHNbTE9HXVtOXTsgLy8gSURzW2ldW3VdID0gRGFuaCBzw6FjaCBJRCDEkcOjIMSRxrDhu6NjIHNvcnQgY+G7p2Egbmjhu69uZyBuZ8aw4budaSBu4bqxbSB0csOqbiDEkcaw4budbmcgxJFpICh1LCB1cFtpXVt1XSkgKGtow7RuZyBiYW8gZ+G7k20gdXBbaV1bdV0pIAppbnQgZGVwdGhbTl07IAppbnQgdGluW05dLCB0b3V0W05dLCB0aW1lcjsgIAoKdmVjdG9yPGludD4gY29tYmluZShjb25zdCB2ZWN0b3I8aW50PiAmYSwgY29uc3QgdmVjdG9yPGludD4gJmIpIHsKCXZlY3RvcjxpbnQ+IGFucyhhLnNpemUoKSArIGIuc2l6ZSgpKTsgIAoJaW50IGkgPSAwLCBqID0gMCwgayA9IDA7ICAKCXdoaWxlIChpIDwgYS5zaXplKCkgJiYgaiA8IGIuc2l6ZSgpKSB7CgkJaWYgKGFbaV0gPCBiW2pdKSBhbnNbaysrXSA9IGFbaSsrXTsgCgkJZWxzZSBhbnNbaysrXSA9IGJbaisrXTsgCgl9Cgl3aGlsZSAoaSA8IGEuc2l6ZSgpKSBhbnNbaysrXSA9IGFbaSsrXTsgCgl3aGlsZSAoaiA8IGIuc2l6ZSgpKSBhbnNbaysrXSA9IGJbaisrXTsgCglpZiAoYW5zLnNpemUoKSA+IDEwKSBhbnMucmVzaXplKDEwKTsgCglyZXR1cm4gYW5zOyAKfQoKdm9pZCBkZnMoaW50IHUsIGludCBwKSB7Cgl0aW5bdV0gPSArK3RpbWVyOyAKCXVwWzBdW3VdID0gcDsgIAoJZm9yIChpbnQgaSA9IDE7IGkgPCBMT0c7IGkrKykgewoJCXVwW2ldW3VdID0gdXBbaSAtIDFdW3VwW2kgLSAxXVt1XV07IAoJCUlEc1tpXVt1XSA9IGNvbWJpbmUoSURzW2kgLSAxXVt1XSwgSURzW2kgLSAxXVt1cFtpIC0gMV1bdV1dKTsgCgl9Cglmb3IgKGludCB2IDogYWRqW3VdKSB7CgkJaWYgKHYgPT0gcCkgY29udGludWU7IAoJCUlEc1swXVt2XSA9IGNbdl07IAoJCWRlcHRoW3ZdID0gZGVwdGhbdV0gKyAxOyAKCQlkZnModiwgdSk7IAoJfQoJdG91dFt1XSA9IHRpbWVyOyAKfQoKYm9vbCBpc0FuY2VzdG9yKGludCB1LCBpbnQgdikgewoJcmV0dXJuICh0aW5bdV0gPD0gdGluW3ZdICYmIHRvdXRbdl0gPD0gdG91dFt1XSk7IAp9CgppbnQgbGNhKGludCB1LCBpbnQgdikgewoJaWYgKGlzQW5jZXN0b3IodSwgdikpIHJldHVybiB1OyAKCWlmIChpc0FuY2VzdG9yKHYsIHUpKSByZXR1cm4gdjsgIAoJZm9yIChpbnQgaSA9IExPRyAtIDE7IGkgPj0gMDsgaS0tKSB7CgkJaWYgKCFpc0FuY2VzdG9yKHVwW2ldW3VdLCB2KSkgewoJCQl1ID0gdXBbaV1bdV07IAoJCX0KCX0KCXJldHVybiB1cFswXVt1XTsgCn0KCnZlY3RvcjxpbnQ+IHF1ZXJ5KGludCB1LCBpbnQgYW5jKSB7Cgl2ZWN0b3I8aW50PiBhbnM7IAoJaW50IGRpZmYgPSBkZXB0aFt1XSAtIGRlcHRoW2FuY107IAoJZm9yIChpbnQgaSA9IDA7IGkgPCBMT0c7IGkrKykgewoJCWlmICgoZGlmZiA+PiBpKSAmIDEpIHsKCQkJYW5zID0gY29tYmluZShhbnMsIElEc1tpXVt1XSk7IAoJCQl1ID0gdXBbaV1bdV07IAoJCX0KCX0KCXJldHVybiBhbnM7IAp9CgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgCgljaW4udGllKG51bGxwdHIpOyAJCgljaW4gPj4gbiA+PiBtID4+IHE7IAoJZm9yIChpbnQgaSA9IDA7IGkgPCBuIC0gMTsgaSsrKSB7CgkJaW50IHUsIHY7IAoJCWNpbiA+PiB1ID4+IHY7IAoJCWFkalt1XS5wdXNoX2JhY2sodik7IAoJCWFkalt2XS5wdXNoX2JhY2sodSk7IAoJfQoKCWZvciAoaW50IGkgPSAxOyBpIDw9IG07IGkrKykgewoJCWludCB1OyBjaW4gPj4gdTsgCgkJaWYgKGNbdV0uc2l6ZSgpIDwgMTApIGNbdV0ucHVzaF9iYWNrKGkpOyAKCX0JCgoJdGltZXIgPSAwOyAgCglkZXB0aFsxXSA9IDA7CglkZnMoMSwgMSk7IAoKCXdoaWxlIChxLS0pIHsKCQlpbnQgdSwgdiwgazsgCgkJY2luID4+IHUgPj4gdiA+PiBrOyAKCgkJaW50IGxjYV91diA9IGxjYSh1LCB2KTsgCgkJdmVjdG9yPGludD4gYW5zID0gY29tYmluZShxdWVyeSh1LCBsY2FfdXYpLCBxdWVyeSh2LCBsY2FfdXYpKTsgCgkJYW5zID0gY29tYmluZShhbnMsIGNbbGNhX3V2XSk7IAoKCQlrID0gbWluKGssIChpbnQpYW5zLnNpemUoKSk7ICAKCQljb3V0IDw8IGsgPDwgJyAnOyAKCQlmb3IgKGludCBpID0gMDsgaSA8IGs7IGkrKykgewoJCQljb3V0IDw8IGFuc1tpXSA8PCAnICc7IAoJCX0KCQljb3V0IDw8ICdcbic7IAoJfQp9