// editor1
// editor2
#include<stdio.h>
#include<stdlib.h>

void DFS(int source, int **mat, int *visited,int V)
{
    printf("%d",source);
    visited[source] = 1;
    for(int itr=0;itr<V;itr++)
    {
        if(mat[source][itr]! =0&&visited[itr]==0)
        DFS(itr,mat,visited,V);
    }
}
int main()
{
    int V,E,r,c,i,u,v,w,source;
    scanf("%d",&V);
    if(V<0)
    {
        printf("Invalid input");
        return 0;
    }
    scanf("%d",&E);
     int **mat;
     int *visted;
     mat =(int**)malloc(V * sizeof(int*));
    for(r=0;r<V;r++)
    mat[r]=(int *)malloc(V * sizeof(int));
      
           
    for(i=1;i<=E;i++)
    {
        scanf("%d %d %d",&u,&v,&w);
        mat[u][v] =w;
    }
     scanf("%d",&source);
     visited =(int*)malloc(V *sizeof(int));
     printf("DFS Traversal starting from vertex %d:",source);
     DFS(source,mat,visited,V);
       return 0;
    
}