#include <bits/stdc++.h>
#define Hoshimachi signed
#define Suisei main
using namespace std;
#define int long long
#define pii pair<int,int>
const int N=105;
int n,m,k;
int dp[(1<<10)+5][N],f[(1<<10)+5];
vector<pii> adj[N];
inline bool getbit(int n, int k){
return (n>>k)&1;
}
Hoshimachi Suisei(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
// freopen(".inp", "r", stdin);
// freopen(".out", "w", stdout);
cin>>n>>m>>k;
for(int i=1; i<=m; i++){
int u,v,w;
cin>>u>>v>>w;
u--,v--;
adj[u].push_back({v,w});
adj[v].push_back({u,w});
}
memset(dp,0x3f,sizeof(dp));
for(int i=0; i<k; i++){
dp[(1<<i)][i]=0;
}
for(int i=n-k; i<n; i++){
dp[(1<<(i-(n-k)+k))][i]=0;
}
memset(f,0x3f,sizeof(f));
for(int mask=0; mask<(1<<2*k); mask++){
for(int sub=mask; sub>0; sub=(sub-1)&mask){
for(int i=0; i<n; i++){
dp[mask][i]=min(dp[mask][i],dp[sub][i]+dp[mask^sub][i]);
}
}
priority_queue<pii,vector<pii>,greater<pii>> q;
for(int i=0; i<n; i++){
q.push({dp[mask][i],i});
}
while(!q.empty()){
auto [d,u]=q.top();
q.pop();
for(auto [v,w]:adj[u]){
int nd=d+w;
if(dp[mask][v]>nd){
dp[mask][v]=nd;
q.push({nd,v});
}
}
}
}
for(int mask=0; mask<(1<<2*k); mask++){
for(int sub=mask; sub>0; sub=(sub-1)&mask){
f[mask]=min(f[mask],f[sub]+f[mask^sub]);
}
int cnt1=0,cnt2=0;
for(int i=0; i<k; i++){
cnt1+=getbit(mask,i);
cnt2+=getbit(mask,i+k);
}
if(cnt1==cnt2){
for(int i=0; i<n; i++){
f[mask]=min(f[mask],dp[mask][i]);
}
}
}
if(f[(1<<2*k)-1]>1e18) cout<<"No solution";
else cout<<f[(1<<2*k)-1];
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgSG9zaGltYWNoaSBzaWduZWQKI2RlZmluZSBTdWlzZWkgbWFpbgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBwaWkgcGFpcjxpbnQsaW50Pgpjb25zdCBpbnQgTj0xMDU7CmludCBuLG0sazsKaW50IGRwWygxPDwxMCkrNV1bTl0sZlsoMTw8MTApKzVdOwp2ZWN0b3I8cGlpPiBhZGpbTl07CmlubGluZSBib29sIGdldGJpdChpbnQgbiwgaW50IGspewogICAgcmV0dXJuIChuPj5rKSYxOwp9Ckhvc2hpbWFjaGkgU3Vpc2VpKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICAvLyBmcmVvcGVuKCIuaW5wIiwgInIiLCBzdGRpbik7CiAgICAvLyBmcmVvcGVuKCIub3V0IiwgInciLCBzdGRvdXQpOwogICAgY2luPj5uPj5tPj5rOwogICAgZm9yKGludCBpPTE7IGk8PW07IGkrKyl7CiAgICAgICAgaW50IHUsdix3OwogICAgICAgIGNpbj4+dT4+dj4+dzsKICAgICAgICB1LS0sdi0tOwogICAgICAgIGFkalt1XS5wdXNoX2JhY2soe3Ysd30pOwogICAgICAgIGFkalt2XS5wdXNoX2JhY2soe3Usd30pOwogICAgfQogICAgbWVtc2V0KGRwLDB4M2Ysc2l6ZW9mKGRwKSk7CiAgICBmb3IoaW50IGk9MDsgaTxrOyBpKyspewogICAgICAgIGRwWygxPDxpKV1baV09MDsKICAgIH0KICAgIGZvcihpbnQgaT1uLWs7IGk8bjsgaSsrKXsKICAgICAgICBkcFsoMTw8KGktKG4taykraykpXVtpXT0wOwogICAgfQogICAgbWVtc2V0KGYsMHgzZixzaXplb2YoZikpOwogICAgZm9yKGludCBtYXNrPTA7IG1hc2s8KDE8PDIqayk7IG1hc2srKyl7CiAgICAgICAgZm9yKGludCBzdWI9bWFzazsgc3ViPjA7IHN1Yj0oc3ViLTEpJm1hc2spewogICAgICAgICAgICBmb3IoaW50IGk9MDsgaTxuOyBpKyspewogICAgICAgICAgICAgICAgZHBbbWFza11baV09bWluKGRwW21hc2tdW2ldLGRwW3N1Yl1baV0rZHBbbWFza15zdWJdW2ldKTsgICAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBwcmlvcml0eV9xdWV1ZTxwaWksdmVjdG9yPHBpaT4sZ3JlYXRlcjxwaWk+PiBxOwogICAgICAgIGZvcihpbnQgaT0wOyBpPG47IGkrKyl7CiAgICAgICAgICAgIHEucHVzaCh7ZHBbbWFza11baV0saX0pOwogICAgICAgIH0KICAgICAgICB3aGlsZSghcS5lbXB0eSgpKXsKICAgICAgICAgICAgYXV0byBbZCx1XT1xLnRvcCgpOwogICAgICAgICAgICBxLnBvcCgpOwogICAgICAgICAgICBmb3IoYXV0byBbdix3XTphZGpbdV0pewogICAgICAgICAgICAgICAgaW50IG5kPWQrdzsKICAgICAgICAgICAgICAgIGlmKGRwW21hc2tdW3ZdPm5kKXsKICAgICAgICAgICAgICAgICAgICBkcFttYXNrXVt2XT1uZDsKICAgICAgICAgICAgICAgICAgICBxLnB1c2goe25kLHZ9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGZvcihpbnQgbWFzaz0wOyBtYXNrPCgxPDwyKmspOyBtYXNrKyspewogICAgICAgIGZvcihpbnQgc3ViPW1hc2s7IHN1Yj4wOyBzdWI9KHN1Yi0xKSZtYXNrKXsKICAgICAgICAgICAgZlttYXNrXT1taW4oZlttYXNrXSxmW3N1Yl0rZlttYXNrXnN1Yl0pOyAgIAogICAgICAgIH0KICAgICAgICBpbnQgY250MT0wLGNudDI9MDsKICAgICAgICBmb3IoaW50IGk9MDsgaTxrOyBpKyspewogICAgICAgICAgICBjbnQxKz1nZXRiaXQobWFzayxpKTsKICAgICAgICAgICAgY250Mis9Z2V0Yml0KG1hc2ssaStrKTsKICAgICAgICB9CiAgICAgICAgaWYoY250MT09Y250Mil7CiAgICAgICAgICAgIGZvcihpbnQgaT0wOyBpPG47IGkrKyl7CiAgICAgICAgICAgICAgICBmW21hc2tdPW1pbihmW21hc2tdLGRwW21hc2tdW2ldKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmKGZbKDE8PDIqayktMV0+MWUxOCkgY291dDw8Ik5vIHNvbHV0aW9uIjsKICAgIGVsc2UgY291dDw8ZlsoMTw8MiprKS0xXTsKfQ==