
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 100010
using namespace std;
struct node{
int x,y,z;
}e[maxn*2];
int n,m,root,num,fa[maxn];
bool cmp(node u,node v){
return u.z<v.z;
}
int find(int x){
if(x==fa[x])return x;
else return fa[x]=find(fa[x]);
}
int main(){
scanf("%d%d%d",&n,&m,&root);
int x,y,z;
for(int i=1;i<=m;i++){
scanf("%d%d%d",&x,&y,&z);
e[++num].x=x;
e[num].y=y;
e[num].z=z;
}
int ans=0;
sort(e+1,e+num+1,cmp);
for(int i=1;i<=n;i++)fa[i]=i;
for(int i=1;i<=num;i++){
int f1=find(e[i].x);
int f2=find(e[i].y);
if(f1!=f2){
ans=max(ans,e[i].z);
fa[f1]=f2;
}
}
printf("%d\n",ans);return 0;
}