#include <bits/stdc++.h>
#include <stdio.h>
#define __Shibae__ signed main()
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define fiopen(Path) freopen(Path".INP", "r", stdin); freopen(Path".OUT", "w", stdout);
#define fipen(Path) freopen(Path".INP", "r", stdin);
#define sz(s) (int)s.size()
#define all(x) x.begin(), x.end()
#define getBit(x, k) (((x) >> (k)) & 1)
#define ll long long
#define ii pair<int, int>
#define fi first
#define se second
#define FOR(i, a, b) for(int i = a, _b = b; i <= _b; i++)
#define FOD(i, a, b) for(int i = a, _b = b; i >= _b; i--)
#define REP(i, n) for(int i = 0; i < (n); i++)
#define pb push_back
#define fau(x, a) for(auto &x : a)
using namespace std;
const int MAX = 100005;
const int lg = 18;
int n, m;
ll k;
vector<ii> g[MAX];
int par[MAX][lg];
int h[MAX];
int tin[MAX];
int timer;
ll f[MAX];
int idx[MAX];
void input()
{
cin >> n >> m >> k;
FOR(i, 1, n - 1)
{
int u, v;
cin >> u >> v;
g[u].pb({v, i});
g[v].pb({u, i});
}
}
void dfs(int u, int pre, int id)
{
tin[u] = ++timer;
par[u][0] = pre;
idx[u] = id;
FOR(i, 1, lg - 1)
par[u][i] = par[par[u][i - 1]][i - 1];
for (auto [v, eid] : g[u])
{
if (v == pre) continue;
h[v] = h[u] + 1;
dfs(v, u, eid);
}
}
int lca(int u, int v)
{
if (h[u] < h[v]) swap(u, v);
int d = h[u] - h[v];
REP(i, lg)
if (getBit(d, i))
u = par[u][i];
if (u == v) return u;
FOD(i, lg - 1, 0)
{
if (par[u][i] != par[v][i])
{
u = par[u][i];
v = par[v][i];
}
}
return par[u][0];
}
bool cmp(int u, int v)
{
return tin[u] < tin[v];
}
void calc(int u, int pre)
{
for (auto [v, id] : g[u])
{
if (v == pre) continue;
calc(v, u);
f[u] += f[v];
}
}
void solve()
{
dfs(1, 1, 0);
FOR(i, 1, m)
{
int x;
cin >> x;
vector<int> vertex(x);
REP(j, x)
cin >> vertex[j];
if (x <= 1) continue;
sort(all(vertex), cmp);
vertex.erase(unique(all(vertex)), vertex.end());
x = sz(vertex);
if (x <= 1) continue;
REP(j, x)
{
int u = vertex[j];
int v = vertex[(j + 1) % x];
int p = lca(u, v);
f[u]++;
f[v]++;
f[p] -= 2;
}
}
calc(1, 1);
vector<int> res;
FOR(i, 2, n)
{
if (f[i] / 2 >= k)
res.pb(idx[i]);
}
sort(all(res));
cout << sz(res) << "\n";
fau(x, res)
cout << x << " ";
}
__Shibae__
{
IOS
fiopen("SUADUONG");
input();
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxzdGRpby5oPgoKI2RlZmluZSBfX1NoaWJhZV9fICAgICAgc2lnbmVkIG1haW4oKQojZGVmaW5lIElPUyAgICAgICAgICAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiNkZWZpbmUgZmlvcGVuKFBhdGgpICAgIGZyZW9wZW4oUGF0aCIuSU5QIiwgInIiLCBzdGRpbik7IGZyZW9wZW4oUGF0aCIuT1VUIiwgInciLCBzdGRvdXQpOwojZGVmaW5lIGZpcGVuKFBhdGgpICAgICBmcmVvcGVuKFBhdGgiLklOUCIsICJyIiwgc3RkaW4pOwojZGVmaW5lIHN6KHMpICAgICAgICAgICAoaW50KXMuc2l6ZSgpCiNkZWZpbmUgYWxsKHgpICAgICAgICAgIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIGdldEJpdCh4LCBrKSAgICAoKCh4KSA+PiAoaykpICYgMSkKI2RlZmluZSBsbCAgICAgICAgICAgICAgbG9uZyBsb25nCiNkZWZpbmUgaWkgICAgICAgICAgICAgIHBhaXI8aW50LCBpbnQ+CiNkZWZpbmUgZmkgICAgICAgICAgICAgIGZpcnN0CiNkZWZpbmUgc2UgICAgICAgICAgICAgIHNlY29uZAojZGVmaW5lIEZPUihpLCBhLCBiKSAgICBmb3IoaW50IGkgPSBhLCBfYiA9IGI7IGkgPD0gX2I7IGkrKykKI2RlZmluZSBGT0QoaSwgYSwgYikgICAgZm9yKGludCBpID0gYSwgX2IgPSBiOyBpID49IF9iOyBpLS0pCiNkZWZpbmUgUkVQKGksIG4pICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCAobik7IGkrKykKI2RlZmluZSBwYiAgICAgICAgICAgICAgcHVzaF9iYWNrCiNkZWZpbmUgZmF1KHgsIGEpICAgICAgIGZvcihhdXRvICZ4IDogYSkKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTUFYID0gMTAwMDA1Owpjb25zdCBpbnQgbGcgPSAxODsKCmludCBuLCBtOwpsbCBrOwoKdmVjdG9yPGlpPiBnW01BWF07CgppbnQgcGFyW01BWF1bbGddOwppbnQgaFtNQVhdOwppbnQgdGluW01BWF07CmludCB0aW1lcjsKCmxsIGZbTUFYXTsKaW50IGlkeFtNQVhdOwoKdm9pZCBpbnB1dCgpCnsKICAgIGNpbiA+PiBuID4+IG0gPj4gazsKCiAgICBGT1IoaSwgMSwgbiAtIDEpCiAgICB7CiAgICAgICAgaW50IHUsIHY7CiAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICBnW3VdLnBiKHt2LCBpfSk7CiAgICAgICAgZ1t2XS5wYih7dSwgaX0pOwogICAgfQp9Cgp2b2lkIGRmcyhpbnQgdSwgaW50IHByZSwgaW50IGlkKQp7CiAgICB0aW5bdV0gPSArK3RpbWVyOwogICAgcGFyW3VdWzBdID0gcHJlOwogICAgaWR4W3VdID0gaWQ7CgogICAgRk9SKGksIDEsIGxnIC0gMSkKICAgICAgICBwYXJbdV1baV0gPSBwYXJbcGFyW3VdW2kgLSAxXV1baSAtIDFdOwoKICAgIGZvciAoYXV0byBbdiwgZWlkXSA6IGdbdV0pCiAgICB7CiAgICAgICAgaWYgKHYgPT0gcHJlKSBjb250aW51ZTsKICAgICAgICBoW3ZdID0gaFt1XSArIDE7CiAgICAgICAgZGZzKHYsIHUsIGVpZCk7CiAgICB9Cn0KCmludCBsY2EoaW50IHUsIGludCB2KQp7CiAgICBpZiAoaFt1XSA8IGhbdl0pIHN3YXAodSwgdik7CgogICAgaW50IGQgPSBoW3VdIC0gaFt2XTsKCiAgICBSRVAoaSwgbGcpCiAgICAgICAgaWYgKGdldEJpdChkLCBpKSkKICAgICAgICAgICAgdSA9IHBhclt1XVtpXTsKCiAgICBpZiAodSA9PSB2KSByZXR1cm4gdTsKCiAgICBGT0QoaSwgbGcgLSAxLCAwKQogICAgewogICAgICAgIGlmIChwYXJbdV1baV0gIT0gcGFyW3ZdW2ldKQogICAgICAgIHsKICAgICAgICAgICAgdSA9IHBhclt1XVtpXTsKICAgICAgICAgICAgdiA9IHBhclt2XVtpXTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHBhclt1XVswXTsKfQoKYm9vbCBjbXAoaW50IHUsIGludCB2KQp7CiAgICByZXR1cm4gdGluW3VdIDwgdGluW3ZdOwp9Cgp2b2lkIGNhbGMoaW50IHUsIGludCBwcmUpCnsKICAgIGZvciAoYXV0byBbdiwgaWRdIDogZ1t1XSkKICAgIHsKICAgICAgICBpZiAodiA9PSBwcmUpIGNvbnRpbnVlOwogICAgICAgIGNhbGModiwgdSk7CiAgICAgICAgZlt1XSArPSBmW3ZdOwogICAgfQp9Cgp2b2lkIHNvbHZlKCkKewogICAgZGZzKDEsIDEsIDApOwoKICAgIEZPUihpLCAxLCBtKQogICAgewogICAgICAgIGludCB4OwogICAgICAgIGNpbiA+PiB4OwoKICAgICAgICB2ZWN0b3I8aW50PiB2ZXJ0ZXgoeCk7CgogICAgICAgIFJFUChqLCB4KQogICAgICAgICAgICBjaW4gPj4gdmVydGV4W2pdOwoKICAgICAgICBpZiAoeCA8PSAxKSBjb250aW51ZTsKCiAgICAgICAgc29ydChhbGwodmVydGV4KSwgY21wKTsKICAgICAgICB2ZXJ0ZXguZXJhc2UodW5pcXVlKGFsbCh2ZXJ0ZXgpKSwgdmVydGV4LmVuZCgpKTsKCiAgICAgICAgeCA9IHN6KHZlcnRleCk7CgogICAgICAgIGlmICh4IDw9IDEpIGNvbnRpbnVlOwoKICAgICAgICBSRVAoaiwgeCkKICAgICAgICB7CiAgICAgICAgICAgIGludCB1ID0gdmVydGV4W2pdOwogICAgICAgICAgICBpbnQgdiA9IHZlcnRleFsoaiArIDEpICUgeF07CiAgICAgICAgICAgIGludCBwID0gbGNhKHUsIHYpOwoKICAgICAgICAgICAgZlt1XSsrOwogICAgICAgICAgICBmW3ZdKys7CiAgICAgICAgICAgIGZbcF0gLT0gMjsKICAgICAgICB9CiAgICB9CgogICAgY2FsYygxLCAxKTsKCiAgICB2ZWN0b3I8aW50PiByZXM7CgogICAgRk9SKGksIDIsIG4pCiAgICB7CiAgICAgICAgaWYgKGZbaV0gLyAyID49IGspCiAgICAgICAgICAgIHJlcy5wYihpZHhbaV0pOwogICAgfQoKICAgIHNvcnQoYWxsKHJlcykpOwoKICAgIGNvdXQgPDwgc3oocmVzKSA8PCAiXG4iOwogICAgZmF1KHgsIHJlcykKICAgICAgICBjb3V0IDw8IHggPDwgIiAiOwp9CgpfX1NoaWJhZV9fCnsKICAgIElPUwogICAgZmlvcGVuKCJTVUFEVU9ORyIpOwoKICAgIGlucHV0KCk7CiAgICBzb2x2ZSgpOwoKICAgIHJldHVybiAwOwp9