#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef pair <ll,ll> ii;
int main()
{
ll a,b,c,d,e,f,g,h,i,node,edge,x,y,w,v,n=0,m,k,s,p=0,oldnode,oldedge,source;
cin>>w;
for(v=0;v<w;v++)//3
{
cin>>node;
cin>>oldnode;
cin>>oldedge;
cin>>edge;
cin>>source;
bool arr[node+1];
ll arr2[node+1];
memset(arr,false,sizeof(arr));arr[node]=false;
memset(arr2,0,sizeof(arr2));arr2[node]=0;
vector < pair <ll,ll> > v[node+1];
priority_queue< ii, vector <ii> , greater <ii> > pq;
for(a=1;a<=oldnode;a++)
{
for(m=a+1;m<=oldnode;m++)
{
v[a].push_back(make_pair(m,oldedge));
v[m].push_back(make_pair(a,oldedge));
}}
for(a=0;a<edge;a++)
{
cin>>b>>c>>d;
v[b].push_back(make_pair(c,d));
v[c].push_back(make_pair(b,d));
}
pq.push( make_pair(0,source));
n=0;y=0;p=0;
while(!pq.empty())
{
x = pq.top().second;//node
y = pq.top().first;//distance
pq.pop();
if(arr[x]==false)
{p++;arr2[x] = y;arr[x]=true;
for(b=0;b<v[x].size();++b)
{if(arr[v[x][b].first]==false)
pq.push( make_pair(v[x][b].second + y,v[x][b].first));
}
}
else{}
if(p>=node)break;
}
for(i=1;i<=node;i++)
{
cout<<arr2[i]<<" ";
}
cout<<"\n";
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgaW50IGxsOwp0eXBlZGVmIHBhaXIgPGxsLGxsPiBpaTsKaW50IG1haW4oKQp7CiAKICAgIGxsICBhLGIsYyxkLGUsZixnLGgsaSxub2RlLGVkZ2UseCx5LHcsdixuPTAsbSxrLHMscD0wLG9sZG5vZGUsb2xkZWRnZSxzb3VyY2U7CiAgICBjaW4+Pnc7CiAgICBmb3Iodj0wO3Y8dzt2KyspLy8zCiAgICB7CiAgICBjaW4+Pm5vZGU7CiAgICBjaW4+Pm9sZG5vZGU7CiAgICBjaW4+Pm9sZGVkZ2U7CiAgICBjaW4+PmVkZ2U7CiAgICBjaW4+PnNvdXJjZTsKICAgIGJvb2wgYXJyW25vZGUrMV07CiAgICBsbCBhcnIyW25vZGUrMV07CiAgICBtZW1zZXQoYXJyLGZhbHNlLHNpemVvZihhcnIpKTthcnJbbm9kZV09ZmFsc2U7CiAgICBtZW1zZXQoYXJyMiwwLHNpemVvZihhcnIyKSk7YXJyMltub2RlXT0wOwogICAgdmVjdG9yIDwgcGFpciA8bGwsbGw+ID4gdltub2RlKzFdOwogICAgcHJpb3JpdHlfcXVldWU8IGlpLCB2ZWN0b3IgPGlpPiAsIGdyZWF0ZXIgPGlpPiA+IHBxOwogICAgZm9yKGE9MTthPD1vbGRub2RlO2ErKykKICAgIHsKICAgICAgICBmb3IobT1hKzE7bTw9b2xkbm9kZTttKyspCiAgICAgICAgewogICAgdlthXS5wdXNoX2JhY2sobWFrZV9wYWlyKG0sb2xkZWRnZSkpOwogICAgdlttXS5wdXNoX2JhY2sobWFrZV9wYWlyKGEsb2xkZWRnZSkpOwogCiAgICAgICAgfX0KZm9yKGE9MDthPGVkZ2U7YSsrKQogICAgewogICAgICAgIGNpbj4+Yj4+Yz4+ZDsKICAgICAgICB2W2JdLnB1c2hfYmFjayhtYWtlX3BhaXIoYyxkKSk7CiAgICAgICAgdltjXS5wdXNoX2JhY2sobWFrZV9wYWlyKGIsZCkpOwogICAgfQogICAgcHEucHVzaCggbWFrZV9wYWlyKDAsc291cmNlKSk7CiAgICBuPTA7eT0wO3A9MDsKICAgIHdoaWxlKCFwcS5lbXB0eSgpKQogICAgewogICAgICAgIHggPSBwcS50b3AoKS5zZWNvbmQ7Ly9ub2RlCiAgICAgICAgIHkgPSBwcS50b3AoKS5maXJzdDsvL2Rpc3RhbmNlCiAgICAgICAgcHEucG9wKCk7CiAgICAgICAgaWYoYXJyW3hdPT1mYWxzZSkKICAgICAgICAgICAge3ArKzthcnIyW3hdID0geTthcnJbeF09dHJ1ZTsKICAgICAgICBmb3IoYj0wO2I8dlt4XS5zaXplKCk7KytiKQogICAgICAgIHtpZihhcnJbdlt4XVtiXS5maXJzdF09PWZhbHNlKQogICAgICAgICAgICBwcS5wdXNoKCBtYWtlX3BhaXIodlt4XVtiXS5zZWNvbmQgKyB5LHZbeF1bYl0uZmlyc3QpKTsKICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZXt9CiAgICAgICAgIGlmKHA+PW5vZGUpYnJlYWs7CiAKICAgIH0KICAgIGZvcihpPTE7aTw9bm9kZTtpKyspCiAgICB7CiAgICAgICAgY291dDw8YXJyMltpXTw8IiAiOwogICAgfQogICAgY291dDw8IlxuIjsKfQp9