#include<stdio.h>
#include<stdlib.h>
#define INF 10000
int d[105][105];
int visit[105];
int m;
int flag;
int count=0;
void floyd()
{
int i,j,k;
int min,max,index;
min=INF;
index=0;
for(k=1;k<=m;k++){
for(i=1;i<=m;i++){
for(j=1;j<=m;j++){
if(d[i][k]+d[k][j]<d[i][j]&&i!=j){
d[i][j]=d[i][k]+d[k][j];
}
}
}
}
for(i=1;i<=m;i++){
max=0;
for(j=1;j<=m;j++){
if(d[i][j]>max&&i!=j)max=d[i][j];
}
if(max<min){
min=max;
index=i;
}
}
printf("%d %d\n",index,min);
}
void dfs(int v)
{
int i;
count++;
visit[v]=1;
if(count>=m){
flag=1;
return;
}
for(i=1;i<=m;i++){
if(d[v][i]!=INF&&!visit[i]){
dfs(i);
if(flag)return;
visit[i]=0;
count--;
}
}
}
int main()
{
//freopen("test.txt","r",stdin);
int n,i,j;
int x,y,w;
scanf("%d%d",&m,&n);
for(i=1;i<=m;i++){
visit[i]=0;
for(j=1;j<=m;j++){
d[i][j]=INF;
}
}
for(i=0;i<n;i++){
scanf("%d%d%d",&x,&y,&w);
d[x][y]=w;
d[y][x]=w;
}
flag=0;
dfs(1);
if(!flag){
printf("0\n");
}
else floyd();
}