#include<bits/stdc++.h>
using namespace std;
struct node
{
int v,w,ne;
}ee[600010];
int n,m,tot=0,dis[300010],a[300010],b[300010],hd[300010],cf[300010],f[300010][25],siz[300010],ft[300010],mni[300010][25];
bool vis[300010];
void add(int u,int v,int w)
{
++tot;
ee[tot].v=v;
ee[tot].w=w;
ee[tot].ne=hd[u];
hd[u]=tot;
}
int find(int x)
{
if(ft[x]==x) return x;
ft[x]=find(ft[x]);
return ft[x];
}
void dfs(int u)
{
vis[u]=true;
for(int i=hd[u];i;i=ee[i].ne)
{
if(!vis[ee[i].v])
{
siz[ee[i].v]=siz[u]+1;
f[ee[i].v][0]=u;
mni[ee[i].v][0]=ee[i].w;
dfs(ee[i].v);
}
}
}
int sum(int l,int r)
{
int ans=0;
if(siz[l]<siz[r]) swap(l,r);
for(int i=20;i>=0;i--) if(siz[f[l][i]]>=siz[r]) ans+=mni[l][i],l=f[l][i];
if(l==r) return ans;
for(int i=20;i>=0;i--) if(f[l][i]!=f[r][i]) ans+=mni[l][i]+mni[r][i],l=f[l][i],r=f[r][i];
return ans+mni[l][0]+mni[r][0];
}
int lca(int l,int r)
{
if(siz[l]<siz[r]) swap(l,r);
for(int i=20;i>=0;i--) if(siz[f[l][i]]>=siz[r]) l=f[l][i];
if(l==r) return l;
for(int i=20;i>=0;i--) if(f[l][i]!=f[r][i]) l=f[l][i],r=f[r][i];
return f[l][0];
}
void cha(int u)
{
vis[u]=true;
for(int i=hd[u];i;i=ee[i].ne)
{
if(!vis[ee[i].v])
{
cha(ee[i].v);
cf[u]+=cf[ee[i].v];
ft[i]=cf[ee[i].v];
}
}
}
int main()
{
cin>>n>>m;
int u,v,w;
for(int i=1;i<n;i++)
{
cin>>u>>v>>w;
add(u,v,w);
add(v,u,w);
}
siz[1]=1;
f[1][0]=1;
dfs(1);
for(int j=1;j<=20;j++)
{
for(int i=1;i<=n;i++)
{
f[i][j]=f[f[i][j-1]][j-1];
mni[i][j]=mni[i][j-1]+mni[f[i][j-1]][j-1];
}
}
int maxx=0,mxa=0;
for(int i=1;i<=m;i++)
{
cin>>a[i]>>b[i];
dis[i]=sum(a[i],b[i]);
maxx=max(maxx,dis[i]);
}
for(int i=1;i<=2*(n-1);i++) mxa=max(mxa,ee[i].w);
int l=maxx-mxa,r=300000000,ans=0x7f7f7f7f;
while(l<=r)
{
int mid=(l+r)>>1;
memset(ft,0,sizeof(ft));
memset(cf,0,sizeof(cf));
memset(vis,false,sizeof(vis));
int cnt=0;
for(int i=1;i<=m;i++)
{
if(dis[i]>mid)
{
cf[a[i]]++;
cf[b[i]]++;
cf[lca(a[i],b[i])]-=2;
cnt++;
}
}
if(cnt==0)
{
ans=min(ans,mid);
r=mid-1;
continue;
}
cha(1);
int maxn=0;
for(int i=1;i<=2*(n-1);i++) if(ft[i]==cnt) maxn=max(maxn,ee[i].w);
if(maxx-maxn<=mid)
{
ans=min(ans,mid);
r=mid-1;
}
else l=mid+1;
}
cout<<ans;
return 0;
}