#include<bits/stdc++.h>
using namespace std;
bool pp=false;
int n,m,wn;
int a[105][2],w[1005][1005];
bool d[20];
int b[105][105];
vector<int> g[15];
int k[10005],x=0;
void dfs(int i,int wn){
d[i]=true;
cout<<i<<" ";
if(i==n){
pp=true;
cout<<wn<<endl;
}
for(int j=1; j<=n; j++){
if(a[i][j]!=0 && d[j]==false){
d[j]=true;
wn+=w[i][j];
dfs(j);
d[j]=false;
}
}
}
int main(){
cin>>n>>m;
for(int i=1; i<=m; i++){
cin>>a[i][1]>>a[i][2];
cin>>w[a[i][1]][a[i][2]];
b[a[i][1]][a[i][2]]=1;
}
dfs(1);
if(pp==false){
cout<<"-1"<<endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int c,p;
int a[1005][1005];
int d[1005];
int minn=INT_MAX;
bool b[1005];
vector<int> g[1005];
int y;
int k;
void bfs(){
memset(d,0,sizeof(d));
queue<int> q;
q.push(1);
b[1]=true;
while(!q.empty()){
y=q.front();
q.pop();
for(int i=0; i<g[y].size(); i++){
if(b[g[y][i]]==false){
k=g[y][i];
b[k]=true;
q.push(k);
d[k]=d[y]+1;
}
}
}
cout<<d[k]<<endl;
}
int main(){
cin>>c>>p;
int qw,qe;
for(int i=1; i<=p; i++){
cin>>qw>>qe;
g[qw].push_back(qe);
g[qe].push_back(qw);
}
bfs();
return 0;
}
//deg