#include<iostream>
#include<queue>
#include<vector>
#include<cstdio>
#include<algorithm>
using namespace std;

queue <pair<int,int> > q;
//priority_queue <int>  q1;
int n,m,k,i,x,y,r,a[9000001];
long long br;
vector <pair<int , int > > v[100001];
pair <int,int> p;

int main()
{
   cin>>n>>m>>k;
   for(i=1;i<=m;i++)
   {
      scanf("%d%d%d",&x,&y,&r);
      v[x].push_back(make_pair(y,r));
      if(x==1)q.push(make_pair(r,y));
   }
   for(;;)
   {
      if(q.empty())break;
      p=q.front();
      q.pop();
      for(i=0;i<v[p.second].size();i++)
      {
         if(v[p.second][i].first==n){br++;a[br]=max(v[p.second][i].second,p.first);}
         else
         q.push(make_pair(max(p.first,v[p.second][i].second),v[p.second][i].first));
      }
   }
   sort(a+1,a+br+1);
   cout<<a[k]<<endl;
   return 0;
}

/*
5 6 2
1 2 2
1 3 3
2 5 3
3 5 2
1 4 1
4 5 4
*/
