#include <bits/stdc++.h>
using namespace std;
long long q,m,n=0,c,u,v,w,price[222];
vector<pair<int,long long> >l[222];
struct cmp{
bool operator()(pair<int,long long>x,pair<int,long long>y)
{
return x.second>y.second;
}
};
priority_queue<pair<int,long long>,vector<pair<int,long long> >,cmp>s;
pair<int,long long>tam,temp;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>q;
while(q--)
{
for(int i=1; i<222; i++)
l[i].clear();
cin>>n>>m>>c;
for(int i=1; i<=n; i++)
price[i]=1e18;
for(int i=1; i<=m; i++)
{
cin>>u>>v>>w;
l[u].push_back({v,w});
l[v].push_back({u,w});
}
price[n]=0;
s.push({n,0});
while(!s.empty())
{
tam=s.top();
s.pop();
if(tam.second!=price[tam.first])continue;
u=tam.first;
for(int i=0; i<l[u].size(); i++)
{
temp=l[u][i];
long long need=tam.second,ca=temp.second;
if(need+ca<=c)temp.second=need+ca;
else
{
if(c<=2*ca)continue;
long long t=(need+ca-c)/(c-2*ca);
if((need+c-ca)%(c-2*ca)!=0)t++;
temp.second=(2*t+1)*ca+need;
}
if(price[temp.first]>temp.second)
{
price[temp.first]=temp.second;
s.push(temp);
}
}
}
cout<<price[1]<<'\n';
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpsb25nIGxvbmcgcSxtLG49MCxjLHUsdix3LHByaWNlWzIyMl07CnZlY3RvcjxwYWlyPGludCxsb25nIGxvbmc+ID5sWzIyMl07CnN0cnVjdCBjbXB7CiAgICBib29sIG9wZXJhdG9yKCkocGFpcjxpbnQsbG9uZyBsb25nPngscGFpcjxpbnQsbG9uZyBsb25nPnkpCiAgICB7CiAgICAgICAgcmV0dXJuIHguc2Vjb25kPnkuc2Vjb25kOwogICAgfQp9Owpwcmlvcml0eV9xdWV1ZTxwYWlyPGludCxsb25nIGxvbmc+LHZlY3RvcjxwYWlyPGludCxsb25nIGxvbmc+ID4sY21wPnM7CnBhaXI8aW50LGxvbmcgbG9uZz50YW0sdGVtcDsKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwogICAgY2luPj5xOwogICAgd2hpbGUocS0tKQogICAgewogICAgICAgIGZvcihpbnQgaT0xOyBpPDIyMjsgaSsrKQogICAgICAgICAgICBsW2ldLmNsZWFyKCk7CiAgICAgICAgY2luPj5uPj5tPj5jOwogICAgICAgIGZvcihpbnQgaT0xOyBpPD1uOyBpKyspCiAgICAgICAgICAgIHByaWNlW2ldPTFlMTg7CiAgICAgICAgZm9yKGludCBpPTE7IGk8PW07IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGNpbj4+dT4+dj4+dzsKICAgICAgICAgICAgbFt1XS5wdXNoX2JhY2soe3Ysd30pOwogICAgICAgICAgICBsW3ZdLnB1c2hfYmFjayh7dSx3fSk7CiAgICAgICAgfQogICAgICAgIHByaWNlW25dPTA7CiAgICAgICAgcy5wdXNoKHtuLDB9KTsKICAgICAgICB3aGlsZSghcy5lbXB0eSgpKQogICAgICAgIHsKICAgICAgICAgICAgdGFtPXMudG9wKCk7CiAgICAgICAgICAgIHMucG9wKCk7CiAgICAgICAgICAgIGlmKHRhbS5zZWNvbmQhPXByaWNlW3RhbS5maXJzdF0pY29udGludWU7CiAgICAgICAgICAgIHU9dGFtLmZpcnN0OwogICAgICAgICAgICBmb3IoaW50IGk9MDsgaTxsW3VdLnNpemUoKTsgaSsrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0ZW1wPWxbdV1baV07CiAgICAgICAgICAgICAgICBsb25nIGxvbmcgbmVlZD10YW0uc2Vjb25kLGNhPXRlbXAuc2Vjb25kOwogICAgICAgICAgICAgICAgaWYobmVlZCtjYTw9Yyl0ZW1wLnNlY29uZD1uZWVkK2NhOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmKGM8PTIqY2EpY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHQ9KG5lZWQrY2EtYykvKGMtMipjYSk7CiAgICAgICAgICAgICAgICAgICAgaWYoKG5lZWQrYy1jYSklKGMtMipjYSkhPTApdCsrOwogICAgICAgICAgICAgICAgICAgIHRlbXAuc2Vjb25kPSgyKnQrMSkqY2ErbmVlZDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmKHByaWNlW3RlbXAuZmlyc3RdPnRlbXAuc2Vjb25kKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHByaWNlW3RlbXAuZmlyc3RdPXRlbXAuc2Vjb25kOwogICAgICAgICAgICAgICAgICAgIHMucHVzaCh0ZW1wKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjb3V0PDxwcmljZVsxXTw8J1xuJzsKICAgIH0KICAgIHJldHVybiAwOwp9