#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
struct st
{
    int y,cost;
};
int n,m,k;
int used[100001];
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)
{
    used[x]=1;
    if(x==n)ans.push_back(cost);

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

    }
    used[x]=0;

}
void solve()
{
    read();
    used[1]=1;
    dfs(1,0);
    sort(ans.begin(),ans.end());
    //for(int i=0;i<ans.size();i++)cout<<ans[i]<<" ";
    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


*/
