#include<cstdio>
#include<cstring>
#include<vector>
#include<utility>
#include<algorithm>
using namespace std;
#define SIZE 10004
#define INF 2147483647
typedef pair<int, int> ii;
typedef pair<int, ii> Iii;
struct Edge
{
int u, v, nr, d;
} E[SIZE];
struct DisjointSet
{
int root, rank;
} S[SIZE];
int NR[SIZE], D[SIZE];
vector<Iii> T[SIZE];
bool compare(const Edge &lhs, const Edge &rhs)
{
return lhs.nr!=rhs.nr ? (lhs.nr>rhs.nr) : (lhs.d<rhs.d);
}
void initialize_sets(int n)
{
for(int i = 1; i<=n; ++i)
S[i].root = i, S[i].rank = 0;
}
int find_set(int u)
{
return S[u].root==u ? u : (S[u].root = find_set(S[u].root));
}
void union_sets(int s1, int s2)
{
if(S[s1].rank<S[s2].rank)
S[s1].root = s2;
else if(S[s1].rank>S[s2].rank)
S[s2].root = s1;
else
S[s2].root = s1, S[s1].rank++;
}
void MST(int n, int m)
{
int s1, s2, i;
sort(E, E+m, compare);
initialize_sets(n);
for(i = 0; i<m && n>1; ++i)
{
s1 = find_set(E[i].u), s2 = find_set(E[i].v);
if(s1!=s2)
union_sets(s1, s2), n--,
T[E[i].u].push_back(Iii(E[i].v, ii(E[i].nr, E[i].d))),
T[E[i].v].push_back(Iii(E[i].u, ii(E[i].nr, E[i].d)));
}
}
void DFS(int u, int parent, int nr, int d)
{
NR[u] = nr, D[u] = d;
for(vector<Iii>::iterator p = T[u].begin(); p!=T[u].end(); ++p)
if(p->first!=parent)
DFS(p->first, u, min(nr, p->second.first), d+p->second.second);
}
void solve(int n, int m, int k)
{
int maxNR, minD = INF, i;
for(i = 1; i<=n; ++i)
T[i].clear();
memset(NR+1, 0, n*sizeof(int));
MST(n, m);
DFS(n, -1, INF, 0);
maxNR = *max_element(NR+1, NR+1+k);
for(i = 1; i<=k; ++i)
if(NR[i]==maxNR && minD>D[i])
minD = D[i];
for(i = 1; i<=k; ++i)
if(NR[i]==maxNR && D[i]==minD)
printf(" %d", i);
putchar('\n');
}
int main()
{
int test, t = 1, n, m, k, i;
for(scanf("%d", &test); t<=test; ++t)
{
scanf("%d %d %d", &n, &k, &m);
for(i = 0; i<m; ++i)
scanf("%d %d %d %d", &E[i].u, &E[i].v, &E[i].d, &E[i].nr);
printf("Case #%d:", t);
solve(n, m, k);
}
return 0;
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxjc3RyaW5nPgojaW5jbHVkZTx2ZWN0b3I+CiNpbmNsdWRlPHV0aWxpdHk+CiNpbmNsdWRlPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgU0laRSAxMDAwNAojZGVmaW5lIElORiAyMTQ3NDgzNjQ3Cgp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOwp0eXBlZGVmIHBhaXI8aW50LCBpaT4gSWlpOwoKc3RydWN0IEVkZ2UKewogICAgaW50IHUsIHYsIG5yLCBkOwp9IEVbU0laRV07CgpzdHJ1Y3QgRGlzam9pbnRTZXQKewogICAgaW50IHJvb3QsIHJhbms7Cn0gU1tTSVpFXTsKCmludCBOUltTSVpFXSwgRFtTSVpFXTsKdmVjdG9yPElpaT4gVFtTSVpFXTsKCmJvb2wgY29tcGFyZShjb25zdCBFZGdlICZsaHMsIGNvbnN0IEVkZ2UgJnJocykKewogICAgcmV0dXJuIGxocy5uciE9cmhzLm5yID8gKGxocy5ucj5yaHMubnIpIDogKGxocy5kPHJocy5kKTsKfQoKdm9pZCBpbml0aWFsaXplX3NldHMoaW50IG4pCnsKICAgIGZvcihpbnQgaSA9IDE7IGk8PW47ICsraSkKICAgICAgICBTW2ldLnJvb3QgPSBpLCBTW2ldLnJhbmsgPSAwOwp9CgppbnQgZmluZF9zZXQoaW50IHUpCnsKICAgIHJldHVybiBTW3VdLnJvb3Q9PXUgPyB1IDogKFNbdV0ucm9vdCA9IGZpbmRfc2V0KFNbdV0ucm9vdCkpOwp9Cgp2b2lkIHVuaW9uX3NldHMoaW50IHMxLCBpbnQgczIpCnsKICAgIGlmKFNbczFdLnJhbms8U1tzMl0ucmFuaykKICAgICAgICBTW3MxXS5yb290ID0gczI7CiAgICBlbHNlIGlmKFNbczFdLnJhbms+U1tzMl0ucmFuaykKICAgICAgICBTW3MyXS5yb290ID0gczE7CiAgICBlbHNlCiAgICAgICAgU1tzMl0ucm9vdCA9IHMxLCBTW3MxXS5yYW5rKys7Cn0KCnZvaWQgTVNUKGludCBuLCBpbnQgbSkKewogICAgaW50IHMxLCBzMiwgaTsKCiAgICBzb3J0KEUsIEUrbSwgY29tcGFyZSk7CiAgICBpbml0aWFsaXplX3NldHMobik7CgogICAgZm9yKGkgPSAwOyBpPG0gJiYgbj4xOyArK2kpCiAgICB7CiAgICAgICAgczEgPSBmaW5kX3NldChFW2ldLnUpLCBzMiA9IGZpbmRfc2V0KEVbaV0udik7CiAgICAgICAgaWYoczEhPXMyKQogICAgICAgICAgICB1bmlvbl9zZXRzKHMxLCBzMiksIG4tLSwKICAgICAgICAgICAgVFtFW2ldLnVdLnB1c2hfYmFjayhJaWkoRVtpXS52LCBpaShFW2ldLm5yLCBFW2ldLmQpKSksCiAgICAgICAgICAgIFRbRVtpXS52XS5wdXNoX2JhY2soSWlpKEVbaV0udSwgaWkoRVtpXS5uciwgRVtpXS5kKSkpOwogICAgfQp9Cgp2b2lkIERGUyhpbnQgdSwgaW50IHBhcmVudCwgaW50IG5yLCBpbnQgZCkKewogICAgTlJbdV0gPSBuciwgRFt1XSA9IGQ7CgogICAgZm9yKHZlY3RvcjxJaWk+OjppdGVyYXRvciBwID0gVFt1XS5iZWdpbigpOyBwIT1UW3VdLmVuZCgpOyArK3ApCiAgICAgICAgaWYocC0+Zmlyc3QhPXBhcmVudCkKICAgICAgICAgICAgREZTKHAtPmZpcnN0LCB1LCBtaW4obnIsIHAtPnNlY29uZC5maXJzdCksIGQrcC0+c2Vjb25kLnNlY29uZCk7Cn0KCnZvaWQgc29sdmUoaW50IG4sIGludCBtLCBpbnQgaykKewogICAgaW50IG1heE5SLCBtaW5EID0gSU5GLCBpOwoKICAgIGZvcihpID0gMTsgaTw9bjsgKytpKQogICAgICAgIFRbaV0uY2xlYXIoKTsKCiAgICBtZW1zZXQoTlIrMSwgMCwgbipzaXplb2YoaW50KSk7CgogICAgTVNUKG4sIG0pOwogICAgREZTKG4sIC0xLCBJTkYsIDApOwoKICAgIG1heE5SID0gKm1heF9lbGVtZW50KE5SKzEsIE5SKzErayk7CiAgICBmb3IoaSA9IDE7IGk8PWs7ICsraSkKICAgICAgICBpZihOUltpXT09bWF4TlIgJiYgbWluRD5EW2ldKQogICAgICAgICAgICBtaW5EID0gRFtpXTsKCiAgICBmb3IoaSA9IDE7IGk8PWs7ICsraSkKICAgICAgICBpZihOUltpXT09bWF4TlIgJiYgRFtpXT09bWluRCkKICAgICAgICAgICAgcHJpbnRmKCIgJWQiLCBpKTsKICAgIHB1dGNoYXIoJ1xuJyk7Cn0KCmludCBtYWluKCkKewogICAgaW50IHRlc3QsIHQgPSAxLCBuLCBtLCBrLCBpOwoKICAgIGZvcihzY2FuZigiJWQiLCAmdGVzdCk7IHQ8PXRlc3Q7ICsrdCkKICAgIHsKICAgICAgICBzY2FuZigiJWQgJWQgJWQiLCAmbiwgJmssICZtKTsKICAgICAgICBmb3IoaSA9IDA7IGk8bTsgKytpKQogICAgICAgICAgICBzY2FuZigiJWQgJWQgJWQgJWQiLCAmRVtpXS51LCAmRVtpXS52LCAmRVtpXS5kLCAmRVtpXS5ucik7CgogICAgICAgIHByaW50ZigiQ2FzZSAjJWQ6IiwgdCk7CiAgICAgICAgc29sdmUobiwgbSwgayk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=