#include<iostream>
#include<fstream>
#include<iomanip>
#include<algorithm>
#include<map>
#include<cmath>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<cstdio>
#include<cstdlib>
#include<vector>
using namespace std;
struct lala
{
    long long int x,len;
};
vector<lala>v[100010];
queue<lala>q;
long long int n,m,k,pos,p[100010];
void BFS ()
{
    lala p1,p2;
    int i,sz;
    p1.x=1;
    p1.len=0;
    q.push(p1);
    while (!q.empty())
    {
        p1=q.front();
        q.pop();

        if (p1.x==n){p[pos++]=p1.len;continue;}

        sz=v[p1.x].size();
        for (i=0;i<sz;i++)
        {
            p2.x=v[p1.x][i].x;
            p2.len=max(p1.len,v[p1.x][i].len);
            q.push(p2);
        }
    }
}
void read ()
{
    long long int i,a;
    lala p1;
    scanf("%lld%lld%lld",&n,&m,&k);
    for (i=0;i<m;i++)
    {
        scanf("%lld%lld%lld",&a,&p1.x,&p1.len);
        v[a].push_back(p1);
    }
}
int main ()
{
    long long int i;
    read ();
    BFS ();
    sort(p,p+pos);
    cout<<p[k-1]<<endl;
    return 0;
}
