#include <bits/stdc++.h>
#define el '\n'
#define fi first
#define sec second
#define pb push_back
#define ll long long
#define pii pair<int,int>
#define sz(v) (int)(v).size()
#define all(v) (v).begin(),(v).end()
#define FOR(i, a, b) for(int i = (a), _b = (b); i <= _b; i++)
#define REP(i, a, b) for(int i = (a), _b = (b); i >= _b; i--)
using namespace std;
const long long LLNF = 0x3f3f3f3f3f3f3f3f;
const int MAX_N = 44444;
struct Huyen_Tram{
ll len;
int nho, type, u;
};
struct cmp{
bool operator()(const Huyen_Tram &x, const Huyen_Tram &y){
return x.len > y.len;
}
};
vector<pii> g[MAX_N + 5];
ll dist[MAX_N + 5][5][200];
int n, m, k;
void Input(){
cin >> n >> m >> k;
FOR(i, 1, m){
int u, v, w;
cin >> u >> v >> w;
g[u].pb({v, w});
g[v].pb({u, w});
}
}
inline ll power(ll x){
ll res = 1;
FOR(i, 1, k) res *= x;
return res;
}
void dijk(){
memset(dist, 0x3f, sizeof(dist));
priority_queue<Huyen_Tram, vector<Huyen_Tram>, cmp> pq;
pq.push({0, 0, 0, 1});
dist[1][0][0] = 0;
while(sz(pq)){
int u = pq.top().u;
int type = pq.top().type;
int nho = pq.top().nho;
ll len = pq.top().len;
pq.pop();
if(len > dist[u][type][nho]) continue;
for(pii x : g[u]){
int v = x.fi, w = x.sec;
int next_type = (type + 1) % k;
int next_nho = (next_type == 0 ? 0 : nho + w);
ll add = (next_type == 0 ? power(nho + w) : 0);
if(dist[v][next_type][next_nho] > len + add){
dist[v][next_type][next_nho] = len + add;
pq.push({dist[v][next_type][next_nho], next_nho, next_type, v});
}
}
}
}
void Solve(){
dijk();
FOR(i, 1, n){
if(dist[i][0][0] != LLNF) cout << dist[i][0][0] << " ";
else cout << -1 << " ";
}
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
Input();
Solve();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGVsICdcbicKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlYyBzZWNvbmQKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBwaWkgcGFpcjxpbnQsaW50PgojZGVmaW5lIHN6KHYpIChpbnQpKHYpLnNpemUoKQojZGVmaW5lIGFsbCh2KSAodikuYmVnaW4oKSwodikuZW5kKCkKI2RlZmluZSBGT1IoaSwgYSwgYikgZm9yKGludCBpID0gKGEpLCBfYiA9IChiKTsgaSA8PSBfYjsgaSsrKQojZGVmaW5lIFJFUChpLCBhLCBiKSBmb3IoaW50IGkgPSAoYSksIF9iID0gKGIpOyBpID49IF9iOyBpLS0pCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgbG9uZyBsb25nIExMTkYgPSAweDNmM2YzZjNmM2YzZjNmM2Y7CmNvbnN0IGludCBNQVhfTiA9IDQ0NDQ0OwoKc3RydWN0IEh1eWVuX1RyYW17CiAgICBsbCBsZW47CiAgICBpbnQgbmhvLCB0eXBlLCB1Owp9OwoKc3RydWN0IGNtcHsKICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBIdXllbl9UcmFtICZ4LCBjb25zdCBIdXllbl9UcmFtICZ5KXsKICAgICAgICByZXR1cm4geC5sZW4gPiB5LmxlbjsKICAgIH0KfTsKCnZlY3RvcjxwaWk+IGdbTUFYX04gKyA1XTsKbGwgZGlzdFtNQVhfTiArIDVdWzVdWzIwMF07CmludCBuLCBtLCBrOwoKdm9pZCBJbnB1dCgpewogICAgY2luID4+IG4gPj4gbSA+PiBrOwogICAgRk9SKGksIDEsIG0pewogICAgICAgIGludCB1LCB2LCB3OwogICAgICAgIGNpbiA+PiB1ID4+IHYgPj4gdzsKICAgICAgICBnW3VdLnBiKHt2LCB3fSk7CiAgICAgICAgZ1t2XS5wYih7dSwgd30pOwogICAgfQp9CgppbmxpbmUgbGwgcG93ZXIobGwgeCl7CiAgICBsbCByZXMgPSAxOwogICAgRk9SKGksIDEsIGspIHJlcyAqPSB4OwogICAgcmV0dXJuIHJlczsKfQoKdm9pZCBkaWprKCl7CiAgICBtZW1zZXQoZGlzdCwgMHgzZiwgc2l6ZW9mKGRpc3QpKTsKICAgIHByaW9yaXR5X3F1ZXVlPEh1eWVuX1RyYW0sIHZlY3RvcjxIdXllbl9UcmFtPiwgY21wPiBwcTsKCiAgICBwcS5wdXNoKHswLCAwLCAwLCAxfSk7CiAgICBkaXN0WzFdWzBdWzBdID0gMDsKCiAgICB3aGlsZShzeihwcSkpewogICAgICAgIGludCB1ID0gcHEudG9wKCkudTsKICAgICAgICBpbnQgdHlwZSA9IHBxLnRvcCgpLnR5cGU7CiAgICAgICAgaW50IG5obyA9IHBxLnRvcCgpLm5obzsKICAgICAgICBsbCBsZW4gPSBwcS50b3AoKS5sZW47CiAgICAgICAgcHEucG9wKCk7CgogICAgICAgIGlmKGxlbiA+IGRpc3RbdV1bdHlwZV1bbmhvXSkgY29udGludWU7CgogICAgICAgIGZvcihwaWkgeCA6IGdbdV0pewogICAgICAgICAgICBpbnQgdiA9IHguZmksIHcgPSB4LnNlYzsKCiAgICAgICAgICAgIGludCBuZXh0X3R5cGUgPSAodHlwZSArIDEpICUgazsKICAgICAgICAgICAgaW50IG5leHRfbmhvID0gKG5leHRfdHlwZSA9PSAwID8gMCA6IG5obyArIHcpOwogICAgICAgICAgICBsbCBhZGQgPSAobmV4dF90eXBlID09IDAgPyBwb3dlcihuaG8gKyB3KSA6IDApOwoKICAgICAgICAgICAgaWYoZGlzdFt2XVtuZXh0X3R5cGVdW25leHRfbmhvXSA+IGxlbiArIGFkZCl7CiAgICAgICAgICAgICAgICBkaXN0W3ZdW25leHRfdHlwZV1bbmV4dF9uaG9dID0gbGVuICsgYWRkOwogICAgICAgICAgICAgICAgcHEucHVzaCh7ZGlzdFt2XVtuZXh0X3R5cGVdW25leHRfbmhvXSwgbmV4dF9uaG8sIG5leHRfdHlwZSwgdn0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cgp2b2lkIFNvbHZlKCl7CiAgICBkaWprKCk7CiAgICBGT1IoaSwgMSwgbil7CiAgICAgICAgaWYoZGlzdFtpXVswXVswXSAhPSBMTE5GKSBjb3V0IDw8IGRpc3RbaV1bMF1bMF0gPDwgIiAiOwogICAgICAgIGVsc2UgY291dCA8PCAtMSA8PCAiICI7CiAgICB9Cn0KCmludCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKCiAgICBJbnB1dCgpOwogICAgU29sdmUoKTsKfQo=