#include<stdio.h>
#define MAX_VERTEX_NUM50//顶点个数
#define INF100000000
int U[MAX_VERTEX_NUM]={1,1,2,2,3,3,4,4,4,4,5,7};
int V[MAX_VERTEX_NUM]={2,4,4,5,1,6,3,5,6,7,7,6};
int C[MAX_VERTEX_NUM]={2,1,3,10,4,5,2,2,8,4,6,1};
int adj[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
int dis[MAX_VERTEX_NUM];
int vis[MAX_VERTEX_NUM];
int pre[MAX_VERTEX_NUM];voidbuild_Graph(int x, int y){
int i=1;for(i=1;i<=7;i++){
int j=1;for( j=1;j<=7;j++){if(i==j)adj[i][j]=0;else adj[i][j]=INF;}}
i=0;for(i=0;i<12;i++){if(U[i]== x &&V[i]== y)continue;
adj[U[i]][V[i]]=C[i];}}voiddijkstra(int v){
int i, j, u , min;for(i=1;i<=7;i++){
dis[i]=adj[v][i];
vis[i]=0;if(i!=v&&adj[v][i]!=INF) pre[i]= v;else pre[i]=-1;}
vis[v]=1;dis[v]=0;for(i=1;i<7;i++){
min =INF;for(j=1;j<=7;j++){if(!vis[j]&&min > dis[j]){
min = dis[j];
u = j;}}if(min ==INF)break;
vis[u]=1;for(j=1;j<=7;j++){if(!vis[j]&&adj[u][j]!=INF&&dis[u]+adj[u][j]<dis[j]){
dis[j]= adj[u][j]+ dis[u];
pre[j]= u;//printf("%d ",j);//printf("%d\n",pre[j]);}}}}voidPath(int v){if(v==1){//设置递归的返回条件 printf("%d",1);return;}Path(pre[v]);printf(",%d",v);}
int main(){
int n,m;scanf("%d,%d",&n,&m);build_Graph(n,m);dijkstra(1);//int i=1;//for(i=1;i<=7;i++)//printf("%d \n",pre[i]); Path(6);printf("\n");return0;}