1 #include<cstdio>
2 #include<cstring>
3 #include<algorithm>
4 using namespace std;
5 const int N=100005;
6 int n,m,t,ans;
7 int f1[N],f2[N];
8 int first[N],v[N],w[N],next[N];
9 void add(int x,int y,int z)
10 {
11 t++;
12 next[t]=first[x];
13 first[x]=t;
14 v[t]=y;
15 w[t]=z;
16 }
17 void dp(int x,int father)
18 {
19 int i,j;
20 for(i=first[x];i;i=next[i])
21 {
22 j=v[i];
23 if(j==father)
24 continue;
25 dp(j,x);
26 if(f1[x]<f1[j]+w[i])
27 {
28 f2[x]=f1[x];
29 f1[x]=f1[j]+w[i];
30 }
31 else if(f2[x]<f1[j]+w[i])
32 f2[x]=f1[j]+w[i];
33 ans=max(ans,f1[x]+f2[x]);
34 }
35 }
36 int main()
37 {
38 int x,y,z,i;
39 scanf("%d%d",&n,&m);
40 for(i=1;i<=m;++i)
41 {
42 scanf("%d%d%d",&x,&y,&z);
43 add(x,y,z);
44 add(y,x,z);
45 }
46 dp(1,0);
47 printf("%d",ans);
48 return 0;
49 }