/*
分析:
用floyd过的,用dij听说也能过。
2012-07-25
*/
分析:
用floyd过的,用dij听说也能过。
2012-07-25
*/
#include"stdio.h"
#include"string.h"
int ans[313][313];
int main()
{
int n,m,q;
int i,l;
int a,b,c;
int hash[313];
int flag=0;
int Case=1;
while(scanf("%d%d%d",&n,&m,&q),n||m||q)
{
if(flag) printf("\n");
flag=1;
for(i=0;i<n;i++)
for(l=0;l<n;l++)
{
if(i==l) ans[i][l]=0;
else ans[i][l]=11111111;
}
for(i=0;i<m;i++)
{
scanf("%d%d%d",&a,&b,&c);
if(c<ans[a][b]) ans[a][b]=c;
}
printf("Case %d:\n",Case++);
memset(hash,0,sizeof(hash));
while(q--)
{
scanf("%d",&a);
if(!a)
{
scanf("%d",&b);
if(hash[b]) printf("ERROR! At point %d\n",b);
else
{
hash[b]=1;
for(i=0;i<n;i++)
for(l=0;l<n;l++)
if(ans[i][l]>ans[i][b]+ans[b][l]) ans[i][l]=ans[i][b]+ans[b][l];
}
}
else
{
scanf("%d%d",&a,&b);
if(!hash[a] || !hash[b]) printf("ERROR! At path %d to %d\n",a,b);
else if(ans[a][b]==11111111)printf("No such path\n");
else printf("%d\n",ans[a][b]);
}
}
}
return 0;
}