#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef int64_t ll;
typedef pair<int,int> ii;
#define EL printf("\n")
#define pb push_back
#define mp make_pair
#define X first
#define Y second
struct data {
int u, d;
data (int u, int d) {
this->u = u;
this->d = d;
}
bool operator < (const data &other) const {
return (d > other.d);
}
};
const int N = 150, M = N*N, oo = 10000000;
int n, m, k, u, v, c, s, t, d[N], dd[N], res[N], trace[N];
vector<ii> a[N];
priority_queue<data> heap;
void reset()
{
res[0] = 0;
for (int i=1;i<=n;i++)
d[i] = oo, dd[i] = 0, trace[i] = -1;
d[s] = 0;
for (int i=1;i<=n;i++) heap.push(data(i,d[i]));
}
void dijkstra()
{
for (;;) {
data top = heap.top();
heap.pop();
if (d[top.u] != top.d) continue;
int u = top.u;
dd[u] = 1;
if (u == t) break;
for (int i=0;i<a[u].size();i++) {
int v = a[u][i].X;
if (!dd[v] and d[v] > d[u] + a[u][i].Y) {
d[v] = d[u] + a[u][i].Y;
trace[v] = u;
heap.push(data(v,d[v]));
}
}
}
}
int main()
{
//freopen("INP.INP","r",stdin);
//freopen("OUT.OUT","w",stdout);
scanf("%d%d%d", &n,&m,&k);
for (int i=1;i<=m;i++) {
scanf("%d%d%d", &u,&v,&c);
a[u].pb(mp(v,c));
a[v].pb(mp(u,c));
}
while (k--) {
scanf("%d%d%d", &c, &s, &t);
reset();
dijkstra();
if (c == 0) printf("%d\n", d[t]);
else {
while (t != -1) {
res[++res[0]] = t;
t = trace[t];
}
printf("%d ", res[0]);
for (int i=res[0];i>0;i--) printf("%d ", res[i]);
EL;
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiBpbnQ2NF90ICAgbGw7CnR5cGVkZWYgcGFpcjxpbnQsaW50PiBpaTsKIAojZGVmaW5lIEVMIHByaW50ZigiXG4iKQojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIFggIGZpcnN0CiNkZWZpbmUgWSAgc2Vjb25kCiAKc3RydWN0IGRhdGEgewogICAgaW50IHUsIGQ7CiAgICBkYXRhIChpbnQgdSwgaW50IGQpIHsKICAgICAgICB0aGlzLT51ID0gdTsKICAgICAgICB0aGlzLT5kID0gZDsKICAgIH0KICAgIGJvb2wgb3BlcmF0b3IgPCAoY29uc3QgZGF0YSAmb3RoZXIpIGNvbnN0IHsKICAgICAgICByZXR1cm4gKGQgPiBvdGhlci5kKTsKICAgIH0KfTsKIApjb25zdCBpbnQgICBOID0gMTUwLCBNID0gTipOLCBvbyA9IDEwMDAwMDAwOwppbnQgICAgICAgICBuLCBtLCBrLCB1LCB2LCBjLCBzLCB0LCBkW05dLCBkZFtOXSwgcmVzW05dLCB0cmFjZVtOXTsKdmVjdG9yPGlpPiAgYVtOXTsKcHJpb3JpdHlfcXVldWU8ZGF0YT4gaGVhcDsKIAp2b2lkIHJlc2V0KCkKewogICAgcmVzWzBdID0gMDsKICAgIGZvciAoaW50IGk9MTtpPD1uO2krKykKICAgICAgICBkW2ldID0gb28sIGRkW2ldID0gMCwgdHJhY2VbaV0gPSAtMTsKICAgIGRbc10gPSAwOwogICAgZm9yIChpbnQgaT0xO2k8PW47aSsrKSBoZWFwLnB1c2goZGF0YShpLGRbaV0pKTsKfQogCnZvaWQgZGlqa3N0cmEoKQp7CiAgICBmb3IgKDs7KSB7CiAgICAgICAgZGF0YSB0b3AgPSBoZWFwLnRvcCgpOwogICAgICAgIGhlYXAucG9wKCk7CiAgICAgICAgaWYgKGRbdG9wLnVdICE9IHRvcC5kKSBjb250aW51ZTsKICAgICAgICBpbnQgdSA9IHRvcC51OwogICAgICAgIGRkW3VdID0gMTsKICAgICAgICBpZiAodSA9PSB0KSBicmVhazsKICAgICAgICBmb3IgKGludCBpPTA7aTxhW3VdLnNpemUoKTtpKyspIHsKICAgICAgICAgICAgaW50IHYgPSBhW3VdW2ldLlg7CiAgICAgICAgICAgIGlmICghZGRbdl0gYW5kIGRbdl0gPiBkW3VdICsgYVt1XVtpXS5ZKSB7CiAgICAgICAgICAgICAgICBkW3ZdID0gZFt1XSArIGFbdV1baV0uWTsKICAgICAgICAgICAgICAgIHRyYWNlW3ZdID0gdTsKICAgICAgICAgICAgICAgIGhlYXAucHVzaChkYXRhKHYsZFt2XSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogCn0KIAppbnQgbWFpbigpCnsKICAgIC8vZnJlb3BlbigiSU5QLklOUCIsInIiLHN0ZGluKTsKICAgIC8vZnJlb3BlbigiT1VULk9VVCIsInciLHN0ZG91dCk7CiAKICAgIHNjYW5mKCIlZCVkJWQiLCAmbiwmbSwmayk7CiAgICBmb3IgKGludCBpPTE7aTw9bTtpKyspIHsKICAgICAgICBzY2FuZigiJWQlZCVkIiwgJnUsJnYsJmMpOwogICAgICAgIGFbdV0ucGIobXAodixjKSk7CiAgICAgICAgYVt2XS5wYihtcCh1LGMpKTsKICAgIH0KICAgIHdoaWxlIChrLS0pIHsKICAgICAgICBzY2FuZigiJWQlZCVkIiwgJmMsICZzLCAmdCk7CiAgICAgICAgcmVzZXQoKTsKICAgICAgICBkaWprc3RyYSgpOwogICAgICAgIGlmIChjID09IDApIHByaW50ZigiJWRcbiIsIGRbdF0pOwogICAgICAgIGVsc2UgewogICAgICAgICAgICB3aGlsZSAodCAhPSAtMSkgewogICAgICAgICAgICAgICAgcmVzWysrcmVzWzBdXSA9IHQ7CiAgICAgICAgICAgICAgICB0ID0gdHJhY2VbdF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHJpbnRmKCIlZCAiLCByZXNbMF0pOwogICAgICAgICAgICBmb3IgKGludCBpPXJlc1swXTtpPjA7aS0tKSBwcmludGYoIiVkICIsIHJlc1tpXSk7CiAgICAgICAgICAgIEVMOwogICAgICAgIH0KICAgIH0KIAogICAgcmV0dXJuIDA7Cn0KIAo=