/*
题目要求我们找到一条1->2的最安全的路,于是,我们可以从1开始dfs,然后就AC了
没错,就是这么easy
*/
#include<cstdio>
#include<iostream>
using namespace std;
#define N 7001
int e[N*2+5000][3],pd[N][60],head[N],tot,n,m;
void add(int u,int v,int w){//编表,记录路径
e[++tot][0]=u;
e[tot][1]=w;
e[tot][2]=head[v];
head[v]=tot;
}
void dfs(int x,int y){//x:节点变化;y:时间耗费
if(pd[x][y]) return ;
pd[x][y]=1;//pd[x][0..59]表示每个点每个秒是否可以到
int c=head[x];
while(c){
dfs(e[c][0],((y+e[c][1])%60+60)%60);//有负数
c=e[c][2];
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1,u,v,w;i<=m;i++)
scanf("%d%d%d",&u,&v,&w),add(u,v,w),add(v,u,w);
dfs(1,0);
for(int i=0;i<=59;i++){
if(pd[2][i]){
if(i<10) printf("0");//补0
printf("%d\n",i);//0->后,输出最优值,结束
return 0;
}
}
printf("60\n");
return 0;
}