#include<iostream>
#include<string.h>
#include<queue>
#include<vector>
#define max 22000
#define infinity 999999999
int status[max];
int dist[max];
int tst,n,m,s,t,wt;
struct st
{
int v;
unsigned int w;
};
class compare
{
public:
bool operator()(const st& v1,const st& v2)
{
return v1.w>v2.w;
}
};
using namespace std;
priority_queue<st,vector<st>,compare> pq;
vector<st> adj[max];
void dijkstra()
{
for(int i=0;i<n;i++)
{
dist[i]=infinity;
}
dist[s]=0;
st s1={s,dist[s]};
pq.push(s1);
while(!pq.empty())
{
st cv=pq.top();
pq.pop();
status[cv.v]=1;
int size=adj[cv.v].size();
for(int i=0;i<size;i++)
{
int u=adj[cv.v][i].v;
int w=adj[cv.v][i].w;
if(dist[u]>dist[cv.v]+w)
{
dist[u]=dist[cv.v]+w;
if(status[u]==0)
{
st s1={u,dist[u]};
pq.push(s1);
}
}
}
}
}
int main()
{
cin>>tst;int k=0;
int v1,v2;
while(tst--)
{
cin>>n>>m>>s>>t;
memset(status,0,sizeof(status));
k++;
for(int i=0;i<m;i++)
{
cin>>v1>>v2>>wt;
st s1={v2,wt};
adj[v1].push_back(s1);
st s2={v1,wt};
adj[v2].push_back(s2);
}
dijkstra();
int l=dist[t];
if(dist[t]==infinity)
{
cout<<"Case #"<<k<<": unreachable"<<"\n";
}
else
{
cout<<"Case #"<<k<<": "<<l<<"\n";
}
for(int i=0;i<n;i++)
{
adj[i].clear();
}
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0cmluZy5oPgojaW5jbHVkZTxxdWV1ZT4KI2luY2x1ZGU8dmVjdG9yPgojZGVmaW5lIG1heCAyMjAwMAojZGVmaW5lIGluZmluaXR5IDk5OTk5OTk5OQppbnQgc3RhdHVzW21heF07CmludCBkaXN0W21heF07CmludCB0c3QsbixtLHMsdCx3dDsKc3RydWN0IHN0CnsKCWludCB2OwoJdW5zaWduZWQgaW50IHc7Cn07CmNsYXNzIGNvbXBhcmUKewoJcHVibGljOgoJYm9vbCBvcGVyYXRvcigpKGNvbnN0IHN0JiB2MSxjb25zdCBzdCYgdjIpCgl7CgkJcmV0dXJuIHYxLnc+djIudzsKCX0KfTsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKcHJpb3JpdHlfcXVldWU8c3QsdmVjdG9yPHN0Pixjb21wYXJlPiBwcTsKdmVjdG9yPHN0PiBhZGpbbWF4XTsKdm9pZCBkaWprc3RyYSgpCnsKCWZvcihpbnQgaT0wO2k8bjtpKyspCgl7CgkJZGlzdFtpXT1pbmZpbml0eTsKCX0KCWRpc3Rbc109MDsKCXN0IHMxPXtzLGRpc3Rbc119OwoJcHEucHVzaChzMSk7Cgl3aGlsZSghcHEuZW1wdHkoKSkKCXsKCQlzdCBjdj1wcS50b3AoKTsKCQlwcS5wb3AoKTsKCQlzdGF0dXNbY3Yudl09MTsKCQlpbnQgc2l6ZT1hZGpbY3Yudl0uc2l6ZSgpOwoJCWZvcihpbnQgaT0wO2k8c2l6ZTtpKyspCgkJewoJCQlpbnQgdT1hZGpbY3Yudl1baV0udjsKCQkJaW50IHc9YWRqW2N2LnZdW2ldLnc7CgkJCWlmKGRpc3RbdV0+ZGlzdFtjdi52XSt3KQoJCQl7CgkJCQlkaXN0W3VdPWRpc3RbY3Yudl0rdzsKCQkJCWlmKHN0YXR1c1t1XT09MCkKCQkJCXsKCQkJCQlzdCBzMT17dSxkaXN0W3VdfTsKCQkJCQlwcS5wdXNoKHMxKTsKCQkJCX0KCQkJCQoJCQl9CgkJCQkJCgkJCQoJCX0KCX0KfQppbnQgbWFpbigpCnsgCiAgICBjaW4+PnRzdDtpbnQgaz0wOwogICAgaW50IHYxLHYyOwogICAgd2hpbGUodHN0LS0pCiAgICB7CiAgICAJIGNpbj4+bj4+bT4+cz4+dDsKICAgIAkgbWVtc2V0KHN0YXR1cywwLHNpemVvZihzdGF0dXMpKTsKICAgIAkgaysrOwogICAgCSBmb3IoaW50IGk9MDtpPG07aSsrKQogICAgCSB7CiAgICAJIAljaW4+PnYxPj52Mj4+d3Q7CiAgICAJIAlzdCBzMT17djIsd3R9OwogICAgCSAJYWRqW3YxXS5wdXNoX2JhY2soczEpOwogICAgCSAJc3QgczI9e3YxLHd0fTsKICAgIAkgCWFkalt2Ml0ucHVzaF9iYWNrKHMyKTsKICAgIAkgfQogICAgCSBkaWprc3RyYSgpOwogICAgCSBpbnQgbD1kaXN0W3RdOwogICAgCSBpZihkaXN0W3RdPT1pbmZpbml0eSkKICAgIAkgewogICAgCSAJY291dDw8IkNhc2UgIyI8PGs8PCI6IHVucmVhY2hhYmxlIjw8IlxuIjsKICAgIAkgCQogICAgCSB9CiAgICAJIGVsc2UKICAgIAkgewogICAgCSAgICBjb3V0PDwiQ2FzZSAjIjw8azw8IjogIjw8bDw8IlxuIjsKICAgIAkgfQogICAgCSBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgCSB7CiAgICAJIAlhZGpbaV0uY2xlYXIoKTsKICAgIAkgfQogICAgfQogICAgcmV0dXJuIDA7CiAgICAKfQ==
NQoyMCAxNSAwIDUgCjAgMSA1NzQKMCAxIDIyNQowIDEgMjU4CjAgMiAxNAowIDMgNTY4IAowIDMgNjY2CjEgMyA1NgoyIDMgNTU1CjEgNCAxCjEgNCAwCjMgNCAyMjIyCjMgNCAyMgozIDUgMQo0IDUgNDQ0CjMgNSAyMjIKMjAgMTUgNCAzIAowIDEgNTc0CjAgMSAyMjUKMCAxIDI1OAowIDIgMTQKMCAzIDU2OCAKMCAzIDY2NgoxIDMgNTYKMiAzIDU1NQoxIDQgMQoxIDQgMAozIDQgMjIyMgozIDQgMjIKMyA1IDEKNCA1IDQ0NAozIDUgMjIyCjIwIDE1IDAgMTIgCjAgMSA1NzQKMCAxIDIyNQowIDEgMjU4CjAgMiAxNAowIDMgNTY4IAowIDMgNjY2CjEgMyA1NgoyIDMgNTU1CjEgNCAxCjEgNCAwCjMgNCAyMjIyCjMgNCAyMgozIDUgMQo0IDUgNDQ0CjMgNSAyMjIKMjAgMTUgMCAwIAowIDEgNTc0CjAgMSAyMjUKMCAxIDI1OAowIDIgMTQKMCAzIDU2OCAKMCAzIDY2NgoxIDMgNTYKMiAzIDU1NQoxIDQgMQoxIDQgMAozIDQgMjIyMgozIDQgMjIKMyA1IDEKNCA1IDQ0NAozIDUgMjIyCjIwIDE1IDUgMAowIDEgNTc0CjAgMSAyMjUKMCAxIDI1OAowIDIgMTQKMCAzIDU2OCAKMCAzIDY2NgoxIDMgNTYKMiAzIDU1NQoxIDQgMQoxIDQgMAozIDQgMjIyMgozIDQgMjIKMyA1IDEKNCA1IDQ0NAozIDUgMjIy
5
20 15 0 5
0 1 574
0 1 225
0 1 258
0 2 14
0 3 568
0 3 666
1 3 56
2 3 555
1 4 1
1 4 0
3 4 2222
3 4 22
3 5 1
4 5 444
3 5 222
20 15 4 3
0 1 574
0 1 225
0 1 258
0 2 14
0 3 568
0 3 666
1 3 56
2 3 555
1 4 1
1 4 0
3 4 2222
3 4 22
3 5 1
4 5 444
3 5 222
20 15 0 12
0 1 574
0 1 225
0 1 258
0 2 14
0 3 568
0 3 666
1 3 56
2 3 555
1 4 1
1 4 0
3 4 2222
3 4 22
3 5 1
4 5 444
3 5 222
20 15 0 0
0 1 574
0 1 225
0 1 258
0 2 14
0 3 568
0 3 666
1 3 56
2 3 555
1 4 1
1 4 0
3 4 2222
3 4 22
3 5 1
4 5 444
3 5 222
20 15 5 0
0 1 574
0 1 225
0 1 258
0 2 14
0 3 568
0 3 666
1 3 56
2 3 555
1 4 1
1 4 0
3 4 2222
3 4 22
3 5 1
4 5 444
3 5 222