#include<bits/stdc++.h>
using namespace std;
inline int read() {
int x=0,f=1;
char ch=getchar();
while (ch<'0'||ch>'9') {
if (ch=='-') f=-1;
ch=getchar();
}
while (ch>='0'&&ch<='9') {
x=x*10+ch-48;
ch=getchar();
}
return x*f;
}
#define inf 0x7fffffff
int n,m,s,d[10001],minn,k,vis[10001];
vector<pair<int,int> >e[10001];
void dij(int s) {
for(int i=1;i<=n;i++)d[i]=inf;
d[s]=0;
for(int i=1; i<n; i++) {
minn=inf;
k=s;
for(int j=1; j<=n; j++){
if (!vis[j]&&minn>d[j]) {
minn=d[j];
k=j;
}
}
vis[k]=1;
for(int j=0; j<e[k].size(); j++) {
int tm=e[k][j].first;
if(!vis[tm]&& minn+e[k][j].second<d[tm])d[tm]=minn+e[k][j].second;
}
}
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
n=read();
m=read();
s=read();
for(int i=1; i<=m; i++)e[read()].push_back(make_pair(read(),read()));
dij(s);
for(int i=1; i<=n; i++)cout<<d[i]<<" ";
cout<<endl;
return 0;
}