#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define IO ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
const int N = 1e5 + 5, M = 2 * N + 5;

int n, m,s,l,k;
vector<pair<int,int> > adj[N];

int lev[N],mx=0;

void bfs(int st){
    queue<int> q;
    q.push(st);
    lev[st] = 1;
    while(q.size()){
        int sz = q.size();
        while(sz--){
            int u = q.front();
//                cout<<u<<" "<<adj[u].size()<<endl;
            q.pop();
            for(auto v : adj[u])
            {
                if(lev[v.first]<=k)
                    mx=max(v.second,mx);
                if(!lev[v.first])
                    q.emplace(v.first), lev[v.first] = lev[u] + 1;
            }
        }
    }
}

int main(){
    IO;
    int t;
    cin>>t;
    while(t--)
    {
        mx=0;
        for(int i=0;i<n;i++)
        {
            adj[i].clear();
            lev[N]=0;
        }
        cin>>n>>m>>s>>l>>k;
        for(int i = 0 ; i < m ; ++i){
            int u, v, w;
            cin>>u>>v>>w;
            adj[u].emplace_back(v,w);
            adj[v].emplace_back(u,w);
        }
    //    for(int i = 0 ; i <= m ; ++i){
    //            cout<<i<<" :";
    //        for(auto v: adj[i])
    //            cout<<v.first<<" ";
    //    cout<<endl;
    //    }
        bfs(s);

        cout<<mx<<endl;
    }
}
