#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
int dis[100],vis[100];
vector <pair <int,int> > adj[100];
priority_queue < pair<int,int> ,vector <pair <int,int> >, greater <pair <int,int> > > pq;
int dijkstra(int s,int des)
{
int i;
for(i=0;i<100;i++)
dis[i]=1000000000;
dis[s]=0;
vis[s]=1;
pair <int,int> tp;
tp.first=0;
tp.second=s;
pq.push(tp);
printf("-\n");
while(!pq.empty())
{
printf("*\n");
tp=pq.top();
pq.pop();
vis[tp.second]=1;
printf("%d-> %d\n",tp.second,tp.first);
int u=tp.second;
printf("%d--\n",(int)adj[u].size());
for(i=0;i<adj[u].size();i++)
{
int v=adj[u][i].second;
// printf("%d*-> %d\n",adj[u][i].second,adj[u][i].first);
if(!vis[v])
{
if(dis[u]+adj[u][i].first<dis[v])
{
dis[v]=dis[u]+adj[u][i].first;
pair <int,int> nw;
nw.first=dis[v];
nw.second=v;
pq.push(nw);
}
}
}
}
return dis[des];
}
int main()
{
int v,i,j,p,c,w,b,e;
pair <int,int> cw;
scanf("%d",&v);
while(scanf("%d%d%d",&p,&c,&w)!=EOF)
{
cw.first=w;
cw.second=c;
adj[p].push_back(cw);
cw.first=w;
cw.second=p;
adj[c].push_back(cw);
}
for(i=1;i<=v;i++)
{
printf("\n%d->\n",i);
for( j=0;j<adj[i].size();j++)
{
printf("%d %d\n",adj[i][j].second,adj[i][j].first);
}
}
scanf("%d%d",&b,&e);
printf("%d",dijkstra(b,e));
}
/*
input-
9
1 2 4
1 8 8
2 8 11
2 3 8
8 7 1
8 9 7
3 4 7
3 9 2
3 6 4
9 7 6
7 6 2
4 6 14
4 5 9
6 5 10
1 5
output- 21
*/
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTx2ZWN0b3I+CiNpbmNsdWRlPHF1ZXVlPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBkaXNbMTAwXSx2aXNbMTAwXTsKdmVjdG9yIDxwYWlyIDxpbnQsaW50PiA+IGFkalsxMDBdOwpwcmlvcml0eV9xdWV1ZSA8IHBhaXI8aW50LGludD4gLHZlY3RvciA8cGFpciA8aW50LGludD4gPiwgZ3JlYXRlciA8cGFpciA8aW50LGludD4gPiA+IHBxOwoKaW50IGRpamtzdHJhKGludCBzLGludCBkZXMpCnsKICAgIGludCBpOwogICAgZm9yKGk9MDtpPDEwMDtpKyspCiAgICAgICAgZGlzW2ldPTEwMDAwMDAwMDA7CiAgICBkaXNbc109MDsKICAgIHZpc1tzXT0xOwogICAgcGFpciA8aW50LGludD4gdHA7CiAgICB0cC5maXJzdD0wOwogICAgdHAuc2Vjb25kPXM7CiAgICBwcS5wdXNoKHRwKTsKICAgIHByaW50ZigiLVxuIik7CiAgICB3aGlsZSghcHEuZW1wdHkoKSkKICAgIHsKICAgICAgICBwcmludGYoIipcbiIpOwogICAgICAgIHRwPXBxLnRvcCgpOwogICAgICAgIHBxLnBvcCgpOwogICAgICAgIHZpc1t0cC5zZWNvbmRdPTE7CiAgICAgICAgcHJpbnRmKCIlZC0+ICVkXG4iLHRwLnNlY29uZCx0cC5maXJzdCk7CiAgICAgICAgaW50IHU9dHAuc2Vjb25kOwogICAgICAgIHByaW50ZigiJWQtLVxuIiwoaW50KWFkalt1XS5zaXplKCkpOwogICAgICAgIGZvcihpPTA7aTxhZGpbdV0uc2l6ZSgpO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGludCB2PWFkalt1XVtpXS5zZWNvbmQ7Ci8vICAgICAgICAgICAgcHJpbnRmKCIlZCotPiAlZFxuIixhZGpbdV1baV0uc2Vjb25kLGFkalt1XVtpXS5maXJzdCk7CiAgICAgICAgICAgIGlmKCF2aXNbdl0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKGRpc1t1XSthZGpbdV1baV0uZmlyc3Q8ZGlzW3ZdKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGRpc1t2XT1kaXNbdV0rYWRqW3VdW2ldLmZpcnN0OwogICAgICAgICAgICAgICAgICAgIHBhaXIgPGludCxpbnQ+IG53OwogICAgICAgICAgICAgICAgICAgIG53LmZpcnN0PWRpc1t2XTsKICAgICAgICAgICAgICAgICAgICBudy5zZWNvbmQ9djsKICAgICAgICAgICAgICAgICAgICBwcS5wdXNoKG53KTsKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gZGlzW2Rlc107Cn0KCmludCBtYWluKCkKewogICAgaW50IHYsaSxqLHAsYyx3LGIsZTsKICAgIHBhaXIgPGludCxpbnQ+IGN3OwogICAgc2NhbmYoIiVkIiwmdik7CiAgICB3aGlsZShzY2FuZigiJWQlZCVkIiwmcCwmYywmdykhPUVPRikKICAgIHsKICAgICAgICBjdy5maXJzdD13OwogICAgICAgIGN3LnNlY29uZD1jOwogICAgICAgIGFkaltwXS5wdXNoX2JhY2soY3cpOwogICAgICAgIGN3LmZpcnN0PXc7CiAgICAgICAgY3cuc2Vjb25kPXA7CiAgICAgICAgYWRqW2NdLnB1c2hfYmFjayhjdyk7CiAgICB9CiAgICBmb3IoaT0xO2k8PXY7aSsrKQogICAgewogICAgICAgIHByaW50ZigiXG4lZC0+XG4iLGkpOwogICAgICAgIGZvciggaj0wO2o8YWRqW2ldLnNpemUoKTtqKyspCiAgICAgICAgewogICAgICAgICAgICBwcmludGYoIiVkICVkXG4iLGFkaltpXVtqXS5zZWNvbmQsYWRqW2ldW2pdLmZpcnN0KTsKICAgICAgICB9CiAgICB9CiAgICBzY2FuZigiJWQlZCIsJmIsJmUpOwogICAgcHJpbnRmKCIlZCIsZGlqa3N0cmEoYixlKSk7Cn0KCi8qCmlucHV0LQoKOQoxIDIgNAoxIDggOAoyIDggMTEKMiAzIDgKOCA3IDEKOCA5IDcKMyA0IDcKMyA5IDIKMyA2IDQKOSA3IDYKNyA2IDIKNCA2IDE0CjQgNSA5CjYgNSAxMAoKMSA1CgpvdXRwdXQtIDIxCgoqLwo=