#include <stdio.h>
#include <queue>
#include <vector>
using namespace std;
#define FOR(i,s,d) for(i=(s);i<(d);++i)
#define mp make_pair
#define f first
#define s second
#define nmax 1024
int n,m,k,H[nmax][nmax],A[nmax][nmax],p[nmax];
priority_queue < pair <int,int> > Q;
char viz[nmax];
void doit(int i)
{
int x,j;
if(viz[i])
return ;
viz[i]=1;
FOR(j,0,n)
if(A[i][j])
doit(j);
FOR(j,0,k)
H[i][j]=1000111000;
if(i==n-1)
H[i][0]=0;
while(!Q.empty())
Q.pop();
FOR(j,0,n)
if(A[i][j])
Q.push(mp(-H[j][0]-A[i][j],j)),p[j]=0;
FOR(j,0,k)
{
if(Q.empty())
return ;
H[i][j]=-Q.top().f;
x=Q.top().s;
Q.push(mp(-H[x][++p[x]]-A[i][x],x));
Q.pop();
}
}
int main()
{
int ii,i,j,c;
freopen("pitici.in","r",stdin);
freopen("pitici.out","w",stdout);
scanf("%d %d %d",&n,&m,&k);
memset(A,0,sizeof(A));
FOR(ii,0,m)
{
scanf("%d %d %d",&i,&j,&c);
i--,j--;
A[i][j]=c;
}
doit(0);
FOR(i,0,k)
printf("%d ",H[0][i]);
printf("\n");
return 0;
}