#include<bits/stdc++.h>
#define ri register int
using namespace std;
const int M=300005;
int n,m,hd[M],to[M*2],vl[M*2],nxt[M*2],cnt,x[M],y[M];
int lc[M],lg[M],fa[M][26],dep[M],sm,cf[M],ds[M],dis[M];
void add(int u,int v,int w)
{nxt[++cnt]=hd[u];hd[u]=cnt;to[cnt]=v;vl[cnt]=w;}
int lca(int k,int l){
if(dep[k]<dep[l])swap(k,l);
while(dep[k]>dep[l])k=fa[k][lg[dep[k]-dep[l]]-1];
if(k==l)return k;
for(ri j=lg[dep[k]]-1;j>=0;--j)if(fa[k][j]!=fa[l][j])
{k=fa[k][j];l=fa[l][j];}
return fa[k][0];
}
void dfs(int k,int l){
fa[k][0]=l;dep[k]=dep[l]+1;
for(ri j=1;j<=lg[dep[k]];++j)
fa[k][j]=fa[fa[k][j-1]][j-1];
for(ri j=hd[k];j;j=nxt[j])
if(l!=to[j])dis[to[j]]=dis[k]+vl[j],dfs(to[j],k);
}
void chfe(int k,int l){
for(ri i=hd[k];i;i=nxt[i])
if(to[i]!=l){dfs(to[i],k);cf[k]+=cf[to[i]];}
}
bool ck(int k){
ri cnt=0,s=0;memset(cf,0,sizeof(cf));
for(ri i=1;i<=m;++i)if(ds[i]>k){
cf[x[i]]++;cf[y[i]]++;cf[lc[i]]-=2;
s=max(s,ds[i]-k);++cnt;
}
if(!cnt)return true;chfe(1,0);
for(ri i=2;i<=n;++i)if(cf[i]==cnt&&dis[i]-dis[fa[i][0]]>=s)return true;
return false;
}
int main(){
scanf("%d%d",&n,&m);
for(ri i=1,u,v,w;i<n;++i){
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);add(v,u,w);sm+=w;
}
for(ri i=1;i<=n;++i)lg[i]=lg[i-1]+(1<<lg[i-1]==i);dfs(1,0);
for(ri i=1;i<=m;++i){
scanf("%d%d",&x[i],&y[i]);
lc[i]=lca(x[i],y[i]);
ds[i]=dis[x[i]]+dis[y[i]]-2*dis[lc[i]];
}
ri l=0,r=sm,mid;
while(l<r){
mid=(l+r)>>1;
if(ck(mid))r=mid;
else l=mid+1;
}
printf("%d",l);
return 0;
}