#include <fstream>
#include <vector>
#define x first
#define y second
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
vector< pair<long long,long long> > l[105];
vector< pair<long long,long long> >::iterator it;
pair<long long,long long> s;
long long n,p,v[105],i,k,st,dr,c;
long long d[105],Min;
const long long INF = (1LL<<61);
int main() {
f>>n>>p;
while(f>>st>>dr>>c) {
s.x=dr;
s.y=c;
l[st].push_back(s);
}
for(i=1;i<=n;i++)
d[i]=INF;
d[p]=0;
for(;;) {
Min=INF;
for(i=1;i<=n;i++)
if(Min>d[i] && v[i]==0) {
k=i;
Min=d[i];
}
if(Min==INF)
break;
v[k]=1;
for(it=l[k].begin();it!=l[k].end();it++)
if(v[it->x]==0 && d[it->x]>d[k]+it->y) {
d[it->x]=d[k]+(it->y);
}
}
for(i=1;i<=n;i++)
if(d[i]==INF)
g<<"-1 ";
else
g<<d[i]<<" ";
return 0;
}