/*input
5 4 3 1
1 1 1
1 1 1
1 1 1
1 2 1 2 0
2 3 2 3 0
3 4 1 2 0
4 5 2 3 0
*/
#include<bits/stdc++.h>
using namespace std;
const int N=5001;
#define int long long
#define pii pair<int, int>
#define f first
#define s second
inline pii mp(int a, int b)
{
pii temp;temp.f=a;temp.s=b;return temp;
}
int graph[101][101][101], n, nd, m, K;
vector< pii > adjlist[N];
priority_queue<pii, vector<pii>, greater< pii > > pq;
int dist[N];
void fw()
{
for(int ind=0;ind<101;ind++)
{
for(int k=1;k<=nd;k++)
{
for(int i=1;i<=nd;i++)
{
for(int j=1;j<=nd;j++) graph[ind][i][j]=min(graph[ind][i][k] + graph[ind][k][j], graph[ind][i][j]);
}
}
}
}
signed main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
//freopen("input.txt", "r", stdin);freopen("output.txt", "w", stdout);
cin>>n>>m>>nd>>K;
for(int i=1;i<=nd;i++)
{
for(int j=1;j<=nd;j++)
{
cin>>graph[0][i][j];
if(graph[0][i][j]==-1) graph[0][i][j]=1e17;;
}
}
for(int i=1;i<101;i++)
{
for(int j=1;j<=nd;j++)
{
for(int k=1;k<=nd;k++)
{
graph[i][j][k]=graph[i-1][j][k];
if(j==i||k==i) graph[i][j][k]+=K;
}
}
}
fw();
for(int i=1;i<=m;i++)
{
int a, b, c, u, v;
cin>>u>>v>>a>>b>>c;
int w=graph[c][a][b];//cout<<w<<endl;
adjlist[u].push_back(mp(v, w));adjlist[v].push_back(mp(u, w));
}
for(int i=1;i<=n;i++) dist[i]=1e17;
dist[1]=0;
pq.push(mp(0, 1));
while(!pq.empty())
{
pii cur=pq.top();pq.pop();
if(cur.f>dist[cur.s]) continue;
for(auto j:adjlist[cur.s])
{
if(dist[j.f]>dist[cur.s] + j.s)
{
dist[j.f]=dist[cur.s]+j.s;pq.push(mp(dist[j.f], j.f));
}
}
}
for(int i=2;i<=n;i++)
{
if(dist[i]==1e17) dist[i]=-1;
cout<<dist[i]<<endl;
}
}
LyppbnB1dAo1IDQgMyAxCjEgMSAxCjEgMSAxCjEgMSAxCjEgMiAxIDIgMAoyIDMgMiAzIDAKMyA0IDEgMiAwCjQgNSAyIDMgMAoqLwojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBpbnQgTj01MDAxOwojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBwaWkgcGFpcjxpbnQsIGludD4KI2RlZmluZSBmIGZpcnN0CiNkZWZpbmUgcyBzZWNvbmQKaW5saW5lIHBpaSBtcChpbnQgYSwgaW50IGIpCnsKCXBpaSB0ZW1wO3RlbXAuZj1hO3RlbXAucz1iO3JldHVybiB0ZW1wOwp9CmludCBncmFwaFsxMDFdWzEwMV1bMTAxXSwgbiwgbmQsIG0sIEs7CnZlY3RvcjwgcGlpID4gYWRqbGlzdFtOXTsKcHJpb3JpdHlfcXVldWU8cGlpLCB2ZWN0b3I8cGlpPiwgZ3JlYXRlcjwgcGlpID4gPiBwcTsKaW50IGRpc3RbTl07CnZvaWQgZncoKQp7Cglmb3IoaW50IGluZD0wO2luZDwxMDE7aW5kKyspCgl7CgkJZm9yKGludCBrPTE7azw9bmQ7aysrKQoJCXsKCQkJZm9yKGludCBpPTE7aTw9bmQ7aSsrKQoJCQl7CgkJCQlmb3IoaW50IGo9MTtqPD1uZDtqKyspIGdyYXBoW2luZF1baV1bal09bWluKGdyYXBoW2luZF1baV1ba10gKyBncmFwaFtpbmRdW2tdW2pdLCBncmFwaFtpbmRdW2ldW2pdKTsKCQkJfQoJCX0KCX0KfQpzaWduZWQgbWFpbigpCnsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpO2Npbi50aWUoTlVMTCk7Y291dC50aWUoTlVMTCk7CgkvL2ZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pO2ZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CgljaW4+Pm4+Pm0+Pm5kPj5LOwoJZm9yKGludCBpPTE7aTw9bmQ7aSsrKQoJewoJCWZvcihpbnQgaj0xO2o8PW5kO2orKykKCQl7CgkJCWNpbj4+Z3JhcGhbMF1baV1bal07CgkJCWlmKGdyYXBoWzBdW2ldW2pdPT0tMSkgZ3JhcGhbMF1baV1bal09MWUxNzs7CgkJfQoJfQoJCglmb3IoaW50IGk9MTtpPDEwMTtpKyspCgl7CgkJZm9yKGludCBqPTE7ajw9bmQ7aisrKQoJCXsKCQkJZm9yKGludCBrPTE7azw9bmQ7aysrKQoJCQl7CgkJCQlncmFwaFtpXVtqXVtrXT1ncmFwaFtpLTFdW2pdW2tdOwoJCQkJaWYoaj09aXx8az09aSkgZ3JhcGhbaV1bal1ba10rPUs7CgkJCX0KCQl9Cgl9CglmdygpOwoJZm9yKGludCBpPTE7aTw9bTtpKyspCgl7CgkJaW50IGEsIGIsIGMsIHUsIHY7CgkJY2luPj51Pj52Pj5hPj5iPj5jOwoJCWludCB3PWdyYXBoW2NdW2FdW2JdOy8vY291dDw8dzw8ZW5kbDsKCQlhZGpsaXN0W3VdLnB1c2hfYmFjayhtcCh2LCB3KSk7YWRqbGlzdFt2XS5wdXNoX2JhY2sobXAodSwgdykpOwoJfQoJZm9yKGludCBpPTE7aTw9bjtpKyspIGRpc3RbaV09MWUxNzsKCWRpc3RbMV09MDsKCXBxLnB1c2gobXAoMCwgMSkpOwoJd2hpbGUoIXBxLmVtcHR5KCkpCgl7CgkJcGlpIGN1cj1wcS50b3AoKTtwcS5wb3AoKTsKCQlpZihjdXIuZj5kaXN0W2N1ci5zXSkgY29udGludWU7CgkJZm9yKGF1dG8gajphZGpsaXN0W2N1ci5zXSkKCQl7CgkJCWlmKGRpc3Rbai5mXT5kaXN0W2N1ci5zXSArIGoucykKCQkJewoJCQkJZGlzdFtqLmZdPWRpc3RbY3VyLnNdK2oucztwcS5wdXNoKG1wKGRpc3Rbai5mXSwgai5mKSk7CgkJCX0KCQl9Cgl9Cglmb3IoaW50IGk9MjtpPD1uO2krKykKCXsKCQlpZihkaXN0W2ldPT0xZTE3KSBkaXN0W2ldPS0xOwoJCWNvdXQ8PGRpc3RbaV08PGVuZGw7Cgl9Cn0=