#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
struct st
{
    int y,cost;
};
int n,m,k;
vector <st> v[100001];
vector <int> ans;
void read()
{
    int x,y,z;
    cin>>n>>m>>k;
    st zz;
    for(int i=1;i<=m;i++)
    {
        //cin>>x>>y>>z;
        scanf("%d%d%d",&x,&y,&z);
        zz.y=y;
        zz.cost=z;
        v[x].push_back(zz);
    }
}
void dfs(int x,int cost)
{
    if(x==n)ans.push_back(cost);

    int sz=v[x].size();
    for(int i=0;i<sz;i++)
    {
        if(v[x][i].cost>cost)dfs(v[x][i].y,v[x][i].cost);
        else dfs(v[x][i].y,cost);
    }

}
void solve()
{
    read();
    dfs(1,0);
    sort(ans.begin(),ans.end());
    cout<<ans[k-1]<<endl;
}

int main()
{
    solve();
    return 0;
}
/*


5 6 2
1 2 2
1 3 3
2 5 3
3 5 2
1 4 1
4 5 4


*/
